sessionize-auth
Version:
A flexible session management library for React, Next.js, Angular, and React Native
60 lines (50 loc) • 1.35 kB
text/typescript
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
};
}
}