Reauthorization is needed if the user receives an error during data reading similar to this:
{
"1_1xxxxxxxxx": {
"state": "partial",
"error": {
"code": "ServiceAuthorizationError",
"error": {
"message": "Service authorization required",
"reauth": true
},
"statusCode": 511
}
}
}
This error indicates that the account marked with accountId 1_1xxxxxxxxx
in the above example has lost authorization rights for a third-party source.
Account IDs can also be obtained from the list of all user accounts that can be fetched using readAccounts.
To trigger account reauthorization, you need to do the following:
// Initialize the SDK
import { init } from "@digime/digime-sdk-nodejs";
const sdk = init({ applicationId: <you-application-id> });
const contractDetails = {
contractId: <your-contract-id>,
privateKey: <private-key-for-contract-id>,
}
// callback - The URL to call after reauthorization is done.
// contractDetails - The same one used in getAuthorizeUrl().
// accountId - accountId returned in error from above example
// userAccessToken - The user access token from the authorization step.
// locale - (Optional) Send preferred locale for authorization client to be used. Default is en.
const { url } = await sdk.getReauthorizeAccountUrl({
callback,
contractDetails,
accountId,
userAccessToken,
locale,
});
The url
returned might look something like this:
https://api.digi.me/apps/saas/reauthorize?code=<code>&accountRef=<accountRef>
Redirect the user to this URL and they will be asked to give permissions to 3rd party service.
At the end of the process, the callback
provided above will be called with the follow extra query parameters:
Parameter | Description | Returned Always |
---|---|---|
success |
Whether the call was successful. true or false |
Yes |
errorCode |
If there was an error, an error code will be returned. Please see the error code section for a list of possible errors. | Yes |