UNPKG

sessionize-auth

Version:

A flexible session management library for React, Next.js, Angular, and React Native

60 lines (50 loc) 1.35 kB
import { BaseSSOProvider } from "./base"; import { SSOUser } from "../types"; /** * Google OAuth 2.0 Provider */ export class GoogleSSOProvider extends BaseSSOProvider { protected getProviderName(): string { return 'Google'; } protected getProviderIcon(): string { return 'https://developers.google.com/identity/images/g-logo.png'; } protected getProviderColor(): string { return '#4285F4'; } protected getScopes(): string[] { return this.config.scopes || [ 'openid', 'email', 'profile' ]; } protected getAuthUrl(): string { return 'https://accounts.google.com/o/oauth2/v2/auth'; } protected getTokenUrl(): string { return 'https://oauth2.googleapis.com/token'; } protected getUserInfoUrl(): string { return 'https://www.googleapis.com/oauth2/v2/userinfo'; } protected parseUserInfo(data: any, accessToken: string): SSOUser { return { id: data.id, email: data.email, name: data.name, avatar: data.picture, provider: 'google', providerId: data.id, accessToken: accessToken }; } protected getCustomParams(): Record<string, string> { return { access_type: 'offline', prompt: 'consent', ...this.config.customParams }; } }