UNPKG

@bc-koenro/oauth2-client

Version:

OAuth2 client for browsers and Node.js. Tiny footprint, PKCE support

69 lines (68 loc) 2.2 kB
import { OAuth2Client } from '../client'; import { OAuth2Token } from '../token'; type GetAuthorizeUrlParams = { /** * Where to redirect the user back to after authentication. */ redirectUri: string; /** * The 'state' is a string that can be sent to the authentication server, * and back to the redirectUri. */ state?: string; /** * Code verifier for PKCE support. If you used this in the redirect * to the authorization endpoint, you also need to use this again * when getting the access_token on the token endpoint. */ codeVerifier?: string; /** * List of scopes. */ scope?: string[]; }; type ValidateResponseResult = { /** * The authorization code. This code should be used to obtain an access token. */ code: string; /** * List of scopes that the client requested. */ scope?: string[]; }; export declare class OAuth2AuthorizationCodeClient { client: OAuth2Client; constructor(client: OAuth2Client); /** * Returns the URi that the user should open in a browser to initiate the * authorization_code flow. */ getAuthorizeUri(params: GetAuthorizeUrlParams): Promise<string>; getTokenFromCodeRedirect(url: string | URL, params: { redirectUri: string; state?: string; codeVerifier?: string; }): Promise<OAuth2Token>; /** * After the user redirected back from the authorization endpoint, the * url will contain a 'code' and other information. * * This function takes the url and validate the response. If the user * redirected back with an error, an error will be thrown. */ validateResponse(url: string | URL, params: { state?: string; }): Promise<ValidateResponseResult>; /** * Receives an OAuth2 token using 'authorization_code' grant */ getToken(params: { code: string; redirectUri: string; codeVerifier?: string; }): Promise<OAuth2Token>; } export declare function generateCodeVerifier(): Promise<string>; export declare function getCodeChallenge(codeVerifier: string): Promise<['plain' | 'S256', string]>; export {};