node-socialite
Version:
Socialite is an OAuth2 authentication tool for Node.js
89 lines (88 loc) • 3.14 kB
TypeScript
import { ProviderConfig, ProviderInterface } from "../../types/global";
import { AxiosRequestConfig, AxiosResponse } from "axios";
import { Config } from "./Config";
import { User } from "./User";
/**
* 服务商抽象类
*/
export declare abstract class BaseProvider implements ProviderInterface {
/**
* 供应商标识
*/
static NAME: string;
protected _config: Config;
protected _state: string;
protected _redirectUrl: string;
protected _parameters: Record<string, any>;
protected _scopes: string[];
protected _scopeSeparator: string;
protected _httpOptions: AxiosRequestConfig;
protected _expiresInKey: string;
protected _accessTokenKey: string;
protected _refreshTokenKey: string;
constructor(config: ProviderConfig);
/**
* 返回生成的授权地址
*/
abstract getAuthUrl(): string;
/**
* 返回获取token的接口地址
*/
abstract getTokenUrl(): string;
/**
* 根据token获取用户信息
* @param token tokenFromCode() 方法获取到的 token
*/
abstract getUserByToken(token: string): Promise<Record<string, any>>;
/**
* 将用户信息映射为用户对象
* @param data getUserByToken() 方法获取到的用户信息
*/
abstract mapUserToObject(data: Record<string, any>): User;
/**
* 获取授权URL
* @param redirectUrl 授权后的跳转地址
*/
redirect(redirectUrl?: string): string;
withRedirectUrl(redirectUrl: string): this;
withState(state: string): this;
scopes(scopes: string[] | string): this;
withScopes(scopes: string[] | string): this;
withScopeSeparator(scopeSeparator: string): this;
with(parameters: Record<string, any>): this;
getConfig(): Config;
getClientId(): string;
getClientSecret(): string;
doRequest(options?: AxiosRequestConfig): Promise<AxiosResponse<any>>;
setHttpOptions(options: AxiosRequestConfig): this;
getHttpOptions(): AxiosRequestConfig;
protected formatScopes(scopes: string[], scopeSeparator: string): string;
protected getTokenFields(code: string): Record<string, any>;
protected buildAuthUrlFromBase(url: string): string;
protected getCodeFields(): Record<string, any>;
/**
* 根据授权后的code获取用户信息
* @param code 授权后的code
*/
userFromCode(code: string): Promise<User>;
/**
* 根据授权后的code获取token
* @param code 授权后的code
*/
tokenFromCode(code: string): Promise<Record<string, any>>;
/**
* 根据授权后的token获取用户信息
* @param token 授权后的code
*/
userFromToken(token: string): Promise<User>;
/**
* 判断是否 AxiosResponse
* @param response
*/
protected isAxiosResponse(response: any): response is AxiosResponse;
/**
* 格式化 AccessToken 对象,确保可以通过 access_token, refresh_token, expires_in 三个属性访问
* @param response
*/
protected normalizeAccessTokenResponse(response: AxiosResponse | Record<string, any> | string): Record<string, any>;
}