module HelloSign::Api::OAuth

Contains all the API calls for OAuth workflows. OAuth allows you to perform actions on behalf of other users after they grant you the authorization to do so. See our OAuth API documentation (app.hellosign.com/api/oauthWalkthrough) for more information.

@author [hellosign]

Public Instance Methods

get_oauth_token(opts) click to toggle source

Retrieves the OAuth token @option opts [String] state Random security value that was used when you created oauth_url for a specific user. @option opts [String] code The code passed to your callback when the user granted access. @option opts [String] client_id The ApiApp Client ID. @option opts [String] client_secret The secret token of your ApiApp.

@return [Hash] OAuth data of the user

@example

client = HelloSign::Client.new(
  api_key: '%apikey%',
  client_id: 'cc91c61d00f8bb2ece1428035716b',
  client_secret: '1d14434088507ffa390e6f5528465'
)
client.get_oauth_token(
  state: '900e06e2',
  code:'1b0d28d90c86c141'
)
# File lib/hello_sign/api/oauth.rb, line 58
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) click to toggle source

Creates a new user and retrieves the 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. @option opts [String] email_address New user's email address.

@return [Hash] details about new user, including OAuth data

@example

client.oauth_create_account email_address: 'new_user@example.com'
# File lib/hello_sign/api/oauth.rb, line 87
def oauth_create_account(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) click to toggle source

Returns the OAuth URL where users can authorize your application to perform actions on their behalf. @param state [String] Random security value that must match throughout the user's flow. 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.

# File lib/hello_sign/api/oauth.rb, line 36
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) click to toggle source

Refreshes the user's OAuth token. @option opts [String] refresh_token The token provided when the access token has expired.

@return [Hash] Refreshed OAuth info

@example

client.refresh_oauth_token refresh_token: 'hNTI2MTFmM2VmZDQxZTZjOWRmZmFjZmVmMGMyNGFjMzI2MGI5YzgzNmE3'
# File lib/hello_sign/api/oauth.rb, line 72
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