# Quantimodo.AuthenticationApi All URIs are relative to *https://app.quantimo.do/api* Method | HTTP request | Description ------------- | ------------- | ------------- [**getAccessToken**](AuthenticationApi.md#getAccessToken) | **GET** /v3/oauth2/token | Get a user access token [**getOauthAuthorizationCode**](AuthenticationApi.md#getOauthAuthorizationCode) | **GET** /v3/oauth2/authorize | Request Authorization Code [**postGoogleIdToken**](AuthenticationApi.md#postGoogleIdToken) | **POST** /v3/googleIdToken | Post GoogleIdToken # **getAccessToken** > getAccessToken(grantType, code, responseType, scope, opts) Get a user access token Client provides authorization token obtained from /api/v3/oauth2/authorize to this endpoint and receives an access token. Access token can then be used to query API endpoints. ### Request Access Token After user approves your access to the given scope form the https:/app.quantimo.do/v1/oauth2/authorize endpoint, you'll receive an authorization code to request an access token. This time make a `POST` request to `/api/v1/oauth/access_token` with parameters including: * `grant_type` Can be `authorization_code` or `refresh_token` since we are getting the `access_token` for the first time we don't have a `refresh_token` so this must be `authorization_code`. * `code` Authorization code you received with the previous request. * `redirect_uri` Your application's redirect url. ### Refreshing Access Token Access tokens expire at some point, to continue using our api you need to refresh them with `refresh_token` you received along with the `access_token`. To do this make a `POST` request to `/api/v1/oauth/access_token` with correct parameters, which are: * `grant_type` This time grant type must be `refresh_token` since we have it. * `clientId` Your application's client id. * `client_secret` Your application's client secret. * `refresh_token` The refresh token you received with the `access_token`. Every request you make to this endpoint will give you a new refresh token and make the old one expired. So you can keep getting new access tokens with new refresh tokens. ### Using Access Token Currently we support 2 ways for this, you can't use both at the same time. * Adding access token to the request header as `Authorization: Bearer {access_token}` * Adding to the url as a query parameter `?access_token={access_token}` You can read more about OAuth2 from [here](http://oauth.net/2/) ### Example ```javascript var Quantimodo = require('quantimodo'); var defaultClient = Quantimodo.ApiClient.instance; // Configure API key authorization: access_token var access_token = defaultClient.authentications['access_token']; access_token.apiKey = 'YOUR API KEY'; // Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null) //access_token.apiKeyPrefix = 'Token'; // Configure OAuth2 access token for authorization: quantimodo_oauth2 var quantimodo_oauth2 = defaultClient.authentications['quantimodo_oauth2']; quantimodo_oauth2.accessToken = 'YOUR ACCESS TOKEN'; var apiInstance = new Quantimodo.AuthenticationApi(); var grantType = "grantType_example"; // String | Grant Type can be 'authorization_code' or 'refresh_token' var code = "code_example"; // String | Authorization code you received with the previous request. var responseType = "responseType_example"; // String | If the value is code, launches a Basic flow, requiring a POST to the token endpoint to obtain the tokens. If the value is token id_token or id_token token, launches an Implicit flow, requiring the use of Javascript at the redirect URI to retrieve tokens from the URI #fragment. var scope = "scope_example"; // String | Scopes include basic, readmeasurements, and writemeasurements. The `basic` scope allows you to read user info (displayName, email, etc). The `readmeasurements` scope allows one to read a user's data. The `writemeasurements` scope allows you to write user data. Separate multiple scopes by a space. var opts = { 'clientId': "clientId_example", // String | Your QuantiModo client id can be obtained by creating an app at https://builder.quantimo.do 'clientSecret': "clientSecret_example", // String | This is the secret for your obtained clientId. We use this to ensure that only your application uses the clientId. Obtain this by creating a free application at [https://builder.quantimo.do](https://builder.quantimo.do). 'redirectUri': "redirectUri_example", // String | The redirect URI is the URL within your client application that will receive the OAuth2 credentials. 'state': "state_example", // String | An opaque string that is round-tripped in the protocol; that is to say, it is returned as a URI parameter in the Basic flow, and in the URI 'platform': "platform_example" // String | Ex: chrome, android, ios, web }; var callback = function(error, data, response) { if (error) { console.error(error); } else { console.log('API called successfully.'); } }; apiInstance.getAccessToken(grantType, code, responseType, scope, opts, callback); ``` ### Parameters Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **grantType** | **String**| Grant Type can be 'authorization_code' or 'refresh_token' | **code** | **String**| Authorization code you received with the previous request. | **responseType** | **String**| If the value is code, launches a Basic flow, requiring a POST to the token endpoint to obtain the tokens. If the value is token id_token or id_token token, launches an Implicit flow, requiring the use of Javascript at the redirect URI to retrieve tokens from the URI #fragment. | **scope** | **String**| Scopes include basic, readmeasurements, and writemeasurements. The `basic` scope allows you to read user info (displayName, email, etc). The `readmeasurements` scope allows one to read a user's data. The `writemeasurements` scope allows you to write user data. Separate multiple scopes by a space. | **clientId** | **String**| Your QuantiModo client id can be obtained by creating an app at https://builder.quantimo.do | [optional] **clientSecret** | **String**| This is the secret for your obtained clientId. We use this to ensure that only your application uses the clientId. Obtain this by creating a free application at [https://builder.quantimo.do](https://builder.quantimo.do). | [optional] **redirectUri** | **String**| The redirect URI is the URL within your client application that will receive the OAuth2 credentials. | [optional] **state** | **String**| An opaque string that is round-tripped in the protocol; that is to say, it is returned as a URI parameter in the Basic flow, and in the URI | [optional] **platform** | **String**| Ex: chrome, android, ios, web | [optional] ### Return type null (empty response body) ### Authorization [access_token](../README.md#access_token), [quantimodo_oauth2](../README.md#quantimodo_oauth2) ### HTTP request headers - **Content-Type**: application/json - **Accept**: application/json # **getOauthAuthorizationCode** > getOauthAuthorizationCode(responseType, scope, opts) Request Authorization Code You can implement OAuth2 authentication to your application using our **OAuth2** endpoints. You need to redirect users to `/api/v3/oauth2/authorize` endpoint to get an authorization code and include the parameters below. This page will ask the user if they want to allow a client's application to submit or obtain data from their QM account. It will redirect the user to the url provided by the client application with the code as a query parameter or error in case of an error. See the /api/v1/oauth/access_token endpoint for the next steps. ### Example ```javascript var Quantimodo = require('quantimodo'); var defaultClient = Quantimodo.ApiClient.instance; // Configure API key authorization: access_token var access_token = defaultClient.authentications['access_token']; access_token.apiKey = 'YOUR API KEY'; // Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null) //access_token.apiKeyPrefix = 'Token'; // Configure OAuth2 access token for authorization: quantimodo_oauth2 var quantimodo_oauth2 = defaultClient.authentications['quantimodo_oauth2']; quantimodo_oauth2.accessToken = 'YOUR ACCESS TOKEN'; var apiInstance = new Quantimodo.AuthenticationApi(); var responseType = "responseType_example"; // String | If the value is code, launches a Basic flow, requiring a POST to the token endpoint to obtain the tokens. If the value is token id_token or id_token token, launches an Implicit flow, requiring the use of Javascript at the redirect URI to retrieve tokens from the URI #fragment. var scope = "scope_example"; // String | Scopes include basic, readmeasurements, and writemeasurements. The `basic` scope allows you to read user info (displayName, email, etc). The `readmeasurements` scope allows one to read a user's data. The `writemeasurements` scope allows you to write user data. Separate multiple scopes by a space. var opts = { 'clientId': "clientId_example", // String | Your QuantiModo client id can be obtained by creating an app at https://builder.quantimo.do 'clientSecret': "clientSecret_example", // String | This is the secret for your obtained clientId. We use this to ensure that only your application uses the clientId. Obtain this by creating a free application at [https://builder.quantimo.do](https://builder.quantimo.do). 'redirectUri': "redirectUri_example", // String | The redirect URI is the URL within your client application that will receive the OAuth2 credentials. 'state': "state_example", // String | An opaque string that is round-tripped in the protocol; that is to say, it is returned as a URI parameter in the Basic flow, and in the URI 'platform': "platform_example" // String | Ex: chrome, android, ios, web }; var callback = function(error, data, response) { if (error) { console.error(error); } else { console.log('API called successfully.'); } }; apiInstance.getOauthAuthorizationCode(responseType, scope, opts, callback); ``` ### Parameters Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- **responseType** | **String**| If the value is code, launches a Basic flow, requiring a POST to the token endpoint to obtain the tokens. If the value is token id_token or id_token token, launches an Implicit flow, requiring the use of Javascript at the redirect URI to retrieve tokens from the URI #fragment. | **scope** | **String**| Scopes include basic, readmeasurements, and writemeasurements. The `basic` scope allows you to read user info (displayName, email, etc). The `readmeasurements` scope allows one to read a user's data. The `writemeasurements` scope allows you to write user data. Separate multiple scopes by a space. | **clientId** | **String**| Your QuantiModo client id can be obtained by creating an app at https://builder.quantimo.do | [optional] **clientSecret** | **String**| This is the secret for your obtained clientId. We use this to ensure that only your application uses the clientId. Obtain this by creating a free application at [https://builder.quantimo.do](https://builder.quantimo.do). | [optional] **redirectUri** | **String**| The redirect URI is the URL within your client application that will receive the OAuth2 credentials. | [optional] **state** | **String**| An opaque string that is round-tripped in the protocol; that is to say, it is returned as a URI parameter in the Basic flow, and in the URI | [optional] **platform** | **String**| Ex: chrome, android, ios, web | [optional] ### Return type null (empty response body) ### Authorization [access_token](../README.md#access_token), [quantimodo_oauth2](../README.md#quantimodo_oauth2) ### HTTP request headers - **Content-Type**: application/json - **Accept**: application/json # **postGoogleIdToken** > postGoogleIdToken() Post GoogleIdToken Post GoogleIdToken ### Example ```javascript var Quantimodo = require('quantimodo'); var apiInstance = new Quantimodo.AuthenticationApi(); var callback = function(error, data, response) { if (error) { console.error(error); } else { console.log('API called successfully.'); } }; apiInstance.postGoogleIdToken(callback); ``` ### Parameters This endpoint does not need any parameter. ### Return type null (empty response body) ### Authorization No authorization required ### HTTP request headers - **Content-Type**: application/json - **Accept**: application/json