/** * Use this provider to authenticate with Facebook. Supports both OAuth2 and OIDC. * * #### Using OAuth * * ```ts {5-8} * import { FacebookProvider } from "@openauthjs/openauth/provider/facebook" * * export default issuer({ * providers: { * facebook: FacebookProvider({ * clientID: "1234567890", * clientSecret: "0987654321" * }) * } * }) * ``` * * #### Using OIDC * * ```ts {5-7} * import { FacebookOidcProvider } from "@openauthjs/openauth/provider/facebook" * * export default issuer({ * providers: { * facebook: FacebookOidcProvider({ * clientID: "1234567890" * }) * } * }) * ``` * * @packageDocumentation */ import { MARK_FACEBOOK } from '../ui/mark.js'; import { Oauth2Provider, Oauth2WrappedConfig } from './oauth2.js'; import { OidcProvider, OidcWrappedConfig } from './oidc.js'; export interface FacebookConfig extends Oauth2WrappedConfig {} export interface FacebookOidcConfig extends OidcWrappedConfig {} /** * Create a Facebook OAuth2 provider. * * @param config - The config for the provider. * @example * ```ts * FacebookProvider({ * clientID: "1234567890", * clientSecret: "0987654321" * }) * ``` */ export function FacebookProvider(config: FacebookConfig) { return Oauth2Provider({ ...config, type: 'facebook', display: { name: 'Facebook', icon: MARK_FACEBOOK }, endpoint: { authorization: 'https://www.facebook.com/v12.0/dialog/oauth', token: 'https://graph.facebook.com/v12.0/oauth/access_token' } }); } /** * Create a Facebook OIDC provider. * * This is useful if you just want to verify the user's email address. * * @param config - The config for the provider. * @example * ```ts * FacebookOidcProvider({ * clientID: "1234567890" * }) * ``` */ export function FacebookOidcProvider(config: FacebookOidcConfig) { return OidcProvider({ ...config, type: 'facebook', display: { name: 'Facebook', icon: MARK_FACEBOOK }, issuer: 'https://graph.facebook.com' }); }