68 lines
1.3 KiB
TypeScript
68 lines
1.3 KiB
TypeScript
|
import got from 'got'
|
||
|
|
||
|
export interface OAuthResponse {
|
||
|
access_token: string
|
||
|
token_type: string
|
||
|
expires_in: number
|
||
|
scope: string
|
||
|
refresh_token: string
|
||
|
id_token: string
|
||
|
}
|
||
|
|
||
|
interface OAuthParams {
|
||
|
serverUrl: string
|
||
|
clientSecret: string
|
||
|
clientId: string
|
||
|
redirectUri: string
|
||
|
}
|
||
|
|
||
|
interface GetOAuthParams extends OAuthParams {
|
||
|
code: string
|
||
|
}
|
||
|
|
||
|
export const getAccessToken = ({
|
||
|
serverUrl,
|
||
|
clientSecret,
|
||
|
clientId,
|
||
|
redirectUri,
|
||
|
code,
|
||
|
}: GetOAuthParams) =>
|
||
|
got.post<OAuthResponse>(`${serverUrl}/oauth/access_token`, {
|
||
|
form: {
|
||
|
client_secret: clientSecret,
|
||
|
client_id: clientId,
|
||
|
redirect_uri: redirectUri,
|
||
|
grant_type: 'authorization_code',
|
||
|
code,
|
||
|
},
|
||
|
responseType: 'json',
|
||
|
throwHttpErrors: true,
|
||
|
})
|
||
|
|
||
|
interface RefreshOAuthParams extends OAuthParams {
|
||
|
serverUrl: string
|
||
|
clientSecret: string
|
||
|
clientId: string
|
||
|
redirectUri: string
|
||
|
refreshToken: string
|
||
|
}
|
||
|
|
||
|
export const refreshAccessToken = ({
|
||
|
serverUrl,
|
||
|
clientSecret,
|
||
|
clientId,
|
||
|
redirectUri,
|
||
|
refreshToken,
|
||
|
}: RefreshOAuthParams) =>
|
||
|
got.post<OAuthResponse>(`${serverUrl}/oauth/access_token`, {
|
||
|
form: {
|
||
|
client_secret: clientSecret,
|
||
|
client_id: clientId,
|
||
|
redirect_uri: redirectUri,
|
||
|
grant_type: 'refresh_token',
|
||
|
refresh_token: refreshToken,
|
||
|
},
|
||
|
responseType: 'json',
|
||
|
throwHttpErrors: true,
|
||
|
})
|