Module: HelloSign::Api::OAuth

Included in:
Client
Defined in:
lib/hello_sign/api/oauth.rb

Overview

OAuth allows you to perform actions on behalf of other users after they grant you the authorization to do so. For example, you could send signature requests on behalf of your users. For more information, see our OAuth API documentation (app.hellosign.com/api/oauthWalkthrough).

IMPORTANT: With some OAuth scopes, you (the app owner) will be charged for all signature requests sent on behalf of other users via your app.

Author:

  • hellosign

Instance Method Summary collapse

Instance Method Details

#get_oauth_token(opts) ⇒ Hash

Retrieves the OAuth token

Examples:

client = HelloSign::Client.new :api_key => '%apikey%', :client_id => 'cc91c61d00f8bb2ece1428035716b', :client_secret => '1d14434088507ffa390e6f5528465'
client.get_oauth_token :state => '900e06e2', :code =>'1b0d28d90c86c141'

Parameters:

  • opts (Hash)

    a customizable set of options

Options Hash (opts):

  • state (String)

    Random value that was used when you created oauth_url for a specific user.

  • code (String)

    The code passed to your callback when the user granted access.

  • client_id (String)

    The API App Client ID.

  • client_secret (String)

    The secret token of your API App.

Returns:

  • (Hash)

    OAuth data of the user



62
63
64
65
66
67
# File 'lib/hello_sign/api/oauth.rb', line 62

def get_oauth_token(opts)
  opts[:client_id] = self.client_id
  opts[:client_secret] = self.client_secret
  opts[:grant_type] = 'authorization_code'
  post('/oauth/token', { :body => opts, :oauth_request => true })
end

#oauth_create_account(opts) ⇒ Hash

Create new user and get their OAuth token. The user will receive an email asking them to confirm the access being granted. Your app will not be able to perform actions on behalf of this user until they confirm.

Examples:

client. :email_address => '[email protected]'

Parameters:

  • opts (Hash)

    a customizable set of options

Options Hash (opts):

  • email_address (String)

    New user email address.

Returns:

  • (Hash)

    details about new user, including OAuth data



95
96
97
98
99
100
# File 'lib/hello_sign/api/oauth.rb', line 95

def (opts)
  opts[:client_id] = self.client_id
  opts[:client_secret] = self.client_secret

  HelloSign::Resource::Account.new post('/account/create', { :body => opts })
end

#oauth_url(state) ⇒ type

Returns the OAuth URL where users can give permission for your application to perform actions on their behalf.

It can be set to the value of your choice (preferably something random). You should verify it matches the expected value when validating the OAuth callback.

Parameters:

  • state (String)

    used for security and must match throughout the flow for a given user.

Returns:

  • (type)
    description


45
46
47
# File 'lib/hello_sign/api/oauth.rb', line 45

def oauth_url(state)
  "#{self.oauth_end_point}/oauth/authorize?response_type=code&client_id=#{self.client_id}&state=#{state}"
end

#refresh_oauth_token(opts) ⇒ Hash

Refreshes the user’s OAuth token.

Examples:

client.refresh_oauth_token :refresh_token => 'hNTI2MTFmM2VmZDQxZTZjOWRmZmFjZmVmMGMyNGFjMzI2MGI5YzgzNmE3'

Parameters:

  • opts (Hash)

    a customizable set of options

Options Hash (opts):

  • refresh_token (String)

    The refresh provided when the access token has expired.

Returns:

  • (Hash)

    Refreshed OAuth info



78
79
80
81
82
83
# File 'lib/hello_sign/api/oauth.rb', line 78

def refresh_oauth_token(opts)
  opts[:client_id] = self.client_id
  opts[:client_secret] = self.client_secret
  opts[:grant_type] = 'refresh_token'
  post('/oauth/token', { :body => opts, :oauth_request => true })
end