|
import { URLSearchParams } from 'node:url'; |
|
|
|
import authScope from '../common/auth-scope.js'; |
|
|
|
const refreshToken = async ($) => { |
|
const params = new URLSearchParams({ |
|
client_id: $.auth.data.clientId, |
|
grant_type: 'refresh_token', |
|
refresh_token: $.auth.data.refreshToken, |
|
}); |
|
|
|
const basicAuthToken = Buffer.from( |
|
$.auth.data.clientId + ':' + $.auth.data.clientSecret |
|
).toString('base64'); |
|
|
|
const { data } = await $.http.post( |
|
'https://airtable.com/oauth2/v1/token', |
|
params.toString(), |
|
{ |
|
headers: { |
|
'Content-Type': 'application/x-www-form-urlencoded', |
|
Authorization: `Basic ${basicAuthToken}`, |
|
}, |
|
additionalProperties: { |
|
skipAddingAuthHeader: true, |
|
}, |
|
} |
|
); |
|
|
|
await $.auth.set({ |
|
accessToken: data.access_token, |
|
refreshToken: data.refresh_token, |
|
expiresIn: data.expires_in, |
|
refreshExpiresIn: data.refresh_expires_in, |
|
scope: authScope.join(' '), |
|
tokenType: data.token_type, |
|
}); |
|
}; |
|
|
|
export default refreshToken; |
|
|