OAuth Flow
Redirect and authorization grant
After completion of the Connect flow, the merchant is sent to the redirect_uri you
provide to connect_url. An authorization code is returned by Braintree in the query
string, along with the state parameter you passed to connect_url.
Here is
an example URL we would redirect to, given a redirect_uri of
https://your.redirect.uri/callback, and a state of foo_state:https://your.redirect.uri/callback?state=foo_state&merchantId=g8cnjbnz83htzgm4&code=8b2cd3963a318b2e
Notice that you also receive back a merchantId. This is a unique identifier for the
account in Braintree's systems, so it can be very useful for support issues; it's also used to
construct deep links to the Braintree Control Panel.
See more details on merchantId in the reference.
Getting an access token
You must exchange the authorization code in the query string for an access_token. The
access_token is used to perform actions on a merchant's behalf. The following example
creates an access_token:
- Ruby
gateway = Braintree::Gateway.new(
client_id: "use_your_client_id",
client_secret: "use_your_client_secret"
)
result = gateway.oauth.create_token_from_code(
code: code_from_query_string
)
access_token = result.credentials.access_token
expires_at = result.credentials.expires_at
refresh_token = result.credentials.refresh_tokenUsing an access token
You'll use the access token to perform actions on the merchant's behalf via the Merchant API.
Managing access tokens
The access_token will expire 24 hours from its creation. To exchange the
access_token (e.g. if the current token is expiring soon or you think it has been
compromised in some way), you can use the refresh_token to get a new one. The
refresh_token is provided when you get the initial access token and will expire 180
days from its creation. Using a refresh_token will give you both a new
access_token and a new refresh_token.
- Ruby
gateway = Braintree::Gateway.new(
client_id: "use_your_client_id",
client_secret: "use_your_client_secret"
)
result = gateway.oauth.create_token_from_refresh_token(
refresh_token: use_the_refresh_token
)
access_token = result.credentials.access_token
expires_at = result.credentials.expires_at
refresh_token = result.credentials.refresh_token- Ruby
gateway = Braintree::Gateway.new(
client_id: "use_your_client_id",
client_secret: "use_your_client_secret"
)
result = gateway.oauth.revoke_access_token(merchant_access_token)Using a revoked access token on behalf of a merchant via the Merchant API will result in an authentication error.