Skip to main content
POST
Token Endpoint

Token Endpoint

The Token Endpoint is used to obtain access tokens (and optionally refresh tokens) by providing an authorization grant. Mubarokah ID supports several grant types on this endpoint: authorization_code, refresh_token, and client_credentials. Important requirements:
  • All requests to the token endpoint MUST use the POST method
  • Request body MUST use application/x-www-form-urlencoded
  • Endpoint: https://accounts.mubarokah.com/oauth/token

Request Parameters

string
required
Grant type to be used. Available options: authorization_code, refresh_token, or client_credentials
string
Authorization code received from the /oauth/authorize redirect (only for grant_type: authorization_code)
string
Valid refresh token (only for grant_type: refresh_token)
string
Redirect URI that matches the one used in the initial authorization request (for authorization_code grant)
string
required
Your application’s Client ID
string
required
Your application’s Client Secret
string
Requested scope (optional for some grant types)
string
Code verifier for PKCE (optional, if using PKCE)

Response

string
required
Access token that can be used to access protected resources
string
required
Usually Bearer. How to use the token in API requests
number
required
Access token lifetime in seconds (e.g., 86400 for 24 hours)
string
Token for obtaining new access tokens when expired
string
Granted scope (if different from requested)

How to Fill API Playground

Based on your successful Laravel OAuth flow, here’s how to fill the fields in “Try It”: Fields to fill:
  • grant_type: refresh_token
  • refresh_token: def502007283433111c7d0723e7683fd204977ccb0f679666ccd96fbf9385cda625bfe318102cf78245d44c8cb85818bc30b29ba74c25ccf1e8c85c5acbefcea8ee25c7b0d3f86e56e979c4a684c7d3276393c154577276e724c5f8f7f2aae592827f455e689d3a422fa85ea74af66e6c5f6a71d9ef8fcd5d0ebe3615cb7efdaa1771e3512c7db0562d63ac9e1cd28d1ce1c7148d667efaaaef9d49774a913f88438a7d57681119cb01eff80b3ad90c003ecd751852ee447ef232ada4789d684f802eeaa29ec35d06b7dfb3b4993171550e3625ff2f56b9157d5b565845f99575e70abd8c9b6d4ddf9e85fdd909b1cda38278147a021e6e2e6e18f9fcb053cb116e62fb5a4a2db50d3640da8d1848e6ea8fae43d334dac942bb374ecb84e89d4b793f77208c9a56c1a3ec76352e14d93cb888482cc91984747dd5f988bc2c416b23f3ebc3495ec919f540968807fff982e1066eedfca74ec0edc423bb13b36ecde2d73f87e8fa83f4bc3f3da36eb210c4a4bf30731774eac51807ae0b4cbf3fa4864254898427ce35b07b281505555668a6c364b2a9cbdeb02f2f0186c
  • client_id: 0a9f8dd9-9f13-4138-abf7-566f30886cf1
  • client_secret: ORgE1SbhnjX73A3NPk2zZjxN0fMJetKPxXsH7Hyu
Fields to leave empty:
  • code (leave empty)
  • redirect_uri (leave empty)
  • scope (optional)
  • code_verifier (leave empty)

Option 2: Client Credentials Grant

Fields to fill:
  • grant_type: client_credentials
  • client_id: 0a9f8dd9-9f13-4138-abf7-566f30886cf1
  • client_secret: ORgE1SbhnjX73A3NPk2zZjxN0fMJetKPxXsH7Hyu
  • scope: server-operations (optional)
Fields to leave empty:
  • code (leave empty)
  • refresh_token (leave empty)
  • redirect_uri (leave empty)
  • code_verifier (leave empty)
The authorization code from your logs has already been used and will result in an invalid_grant error. For testing this, you need to perform a new OAuth flow:
  • grant_type: authorization_code
  • code: [NEW_AUTHORIZATION_CODE]
  • redirect_uri: http://127.0.0.1:3090/sso/auth/callback
  • client_id: 0a9f8dd9-9f13-4138-abf7-566f30886cf1
  • client_secret: ORgE1SbhnjX73A3NPk2zZjxN0fMJetKPxXsH7Hyu

Supported Grant Types

1. Authorization Code Grant (Most Common)

Used after user authorizes your application. Exchanges authorization code for access token. Example Request:

2. Refresh Token Grant

Used to obtain new access tokens when current token expires. Example Request:

3. Client Credentials Grant

For machine-to-machine (M2M) authentication, without user involvement. Example Request:

Example Success Response

Error Response

If the request fails, it will return a JSON error response:

Common Error Codes

Security Best Practices

Never expose client_secret in client-side code! client_secret must be stored securely on your server.
  1. Store credentials securely using environment variables
  2. Use HTTPS for all OAuth communications
  3. Implement proper error handling
  4. Validate state parameter for CSRF protection
  5. Rotate credentials regularly
  6. Monitor token usage for suspicious activity
  7. Implement token refresh logic
  8. Use PKCE for public clients