Documentation / zerotal / auth / FacebookDriver
Class: FacebookDriver
Defined in: packages/auth/src/social/drivers/FacebookDriver.ts:11
Authenticates users via Facebook Login (Graph API v18.0). Requests
id,name,email,picture from /me; the avatar comes from the nested
picture.data.url.
Extends
Constructors
Constructor
new FacebookDriver(
config):FacebookDriver
Defined in: packages/auth/src/social/drivers/OAuth2Driver.ts:92
Parameters
config
Returns
FacebookDriver
Inherited from
Callback
userFromToken()
userFromToken(
token):Promise<SocialUser>
Defined in: packages/auth/src/social/drivers/OAuth2Driver.ts:186
Retrieve a user's profile from an access token you already hold — e.g. a native/mobile app that obtained the token via its own SDK. Skips the code-exchange step entirely; the returned user carries no refresh token or expiry (those come from exchange).
const socialUser = await Social.driver('github').userFromToken(accessToken);
Parameters
token
string
An access token already obtained out-of-band (e.g. a mobile SDK).
Returns
Promise<SocialUser>
The normalized profile for that token.
Throws
If the provider's user-info request fails.
Inherited from
user()
user(
code?):Promise<SocialUser>
Defined in: packages/auth/src/social/drivers/OAuth2Driver.ts:386
Handle the OAuth2 callback, or exchange a raw code in stateless mode.
Stateful (session-based): call with no arguments — the driver reads the
current HttpContext from async-local storage, extracts code + state,
verifies state against the session, then exchanges the code for a profile:
async callback({ params }: HttpContext) {
const socialUser = await Social.driver(params.provider).user();
}
Stateless (SPA / mobile): call with the raw code — skips session/state verification entirely:
const socialUser = await Social.driver('github').stateless().user(rawCode);
Throws Error('invalid_state') or Error('missing_code') on validation
failure — catch in your controller and redirect accordingly.
Parameters
code?
string
Optional raw authorization code for stateless flows; omit for the stateful session-based callback.
Returns
Promise<SocialUser>
The normalized SocialUser for the authenticated account.
Throws
When the callback state is missing or mismatched.
Throws
When no authorization code is present.
Throws
When the provider's token exchange fails.
Inherited from
Configuration
stateless()
stateless():
this
Defined in: packages/auth/src/social/drivers/OAuth2Driver.ts:208
Return a shallow copy of this driver with CSRF state verification disabled.
Use this for stateless API/mobile endpoints that receive a raw code
directly (no session, no state param):
const socialUser = await Social.driver('google').stateless().user(rawCode);
A copy is returned so the registered singleton is never mutated.
Returns
this
Inherited from
scopes()
scopes(
scopes):this
Defined in: packages/auth/src/social/drivers/OAuth2Driver.ts:224
Add scopes to the authorization request, merged with the default/configured scopes. Returns a copy so the registered singleton is never mutated.
Social.driver('github').scopes(['read:user', 'public_repo']).redirect();
Parameters
scopes
string[]
Returns
this
Inherited from
setScopes()
setScopes(
scopes):this
Defined in: packages/auth/src/social/drivers/OAuth2Driver.ts:236
Replace all scopes on the authorization request. Returns a copy so the registered singleton is never mutated.
Parameters
scopes
string[]
Returns
this
Inherited from
with()
with(
params):this
Defined in: packages/auth/src/social/drivers/OAuth2Driver.ts:259
Append optional parameters to the authorization redirect URL. Useful for
provider-specific options such as Google's
access_type=offline + prompt=consent (required to receive a refresh
token) or hd for hosted-domain restriction.
Do not pass reserved keys (client_id, redirect_uri, scope, state,
response_type) — those are managed by the driver. Returns a copy.
Social.driver('google')
.with({ access_type: 'offline', prompt: 'consent' })
.redirect();
Parameters
params
Record<string, string>
Returns
this
Inherited from
Other
authUrl()
protectedauthUrl():string
Defined in: packages/auth/src/social/drivers/FacebookDriver.ts:12
Returns
string
Overrides
tokenUrl()
protectedtokenUrl():string
Defined in: packages/auth/src/social/drivers/FacebookDriver.ts:15
Returns
string
Overrides
userUrl()
protecteduserUrl():string
Defined in: packages/auth/src/social/drivers/FacebookDriver.ts:18
Returns
string
Overrides
defaultScopes()
protecteddefaultScopes():string[]
Defined in: packages/auth/src/social/drivers/FacebookDriver.ts:22
Returns
string[]
Overrides
normalise()
protectednormalise(raw,token):SocialUser
Defined in: packages/auth/src/social/drivers/FacebookDriver.ts:26
Parameters
raw
Record<string, unknown>
token
string
Returns
Overrides
config
protectedconfig:OAuth2Config
Defined in: packages/auth/src/social/drivers/OAuth2Driver.ts:87
Inherited from
extraAuthParams()
protectedextraAuthParams():Record<string,string>
Defined in: packages/auth/src/social/drivers/OAuth2Driver.ts:105
Extra query parameters appended to the authorization redirect URL.
Returns
Record<string, string>
Inherited from
scopeSeparator()
protectedscopeSeparator():string
Defined in: packages/auth/src/social/drivers/OAuth2Driver.ts:110
Separator used to join scope values. Default: space.
Returns
string
Inherited from
includeResponseType()
protectedincludeResponseType():boolean
Defined in: packages/auth/src/social/drivers/OAuth2Driver.ts:119
Whether to include response_type=code in the authorization URL.
Most providers require it; GitHub does not accept it and returns 404.
Override to return false for providers that omit it.
Returns
boolean
Inherited from
OAuth2Driver.includeResponseType
usesPKCE()
protectedusesPKCE():boolean
Defined in: packages/auth/src/social/drivers/OAuth2Driver.ts:130
Whether to use PKCE (RFC 7636, S256) on the authorization-code flow.
Default true: a stolen authorization code cannot be exchanged without
the per-flow code_verifier held in the session, and providers that do
not support PKCE simply ignore the extra parameters. Override to return
false for a provider that rejects unknown params.
Returns
boolean
Inherited from
afterNormalise()
protectedafterNormalise(user,_token):Promise<SocialUser>
Defined in: packages/auth/src/social/drivers/OAuth2Driver.ts:138
Called after normalise() — override to enrich the user object (e.g. fetch
a secondary endpoint). Default: returns the user unchanged.
Parameters
user
_token
string
Returns
Promise<SocialUser>
Inherited from
_extractCodeAndState()
protected_extractCodeAndState(ctx):Promise<{code:string|null;state:string|null; }>
Defined in: packages/auth/src/social/drivers/OAuth2Driver.ts:150
Override to change how code and state are extracted from the incoming
request. Default: reads ?code=&state= from the query string.
This is an internal hook called by user() — it receives the HttpContext
resolved from async-local storage. Apple overrides this to read from a
POST form body instead.
Parameters
ctx
SocialHttpContext
Returns
Promise<{ code: string | null; state: string | null; }>
Inherited from
OAuth2Driver._extractCodeAndState
_doUser()
protected_doUser(code,codeVerifier?):Promise<SocialUser>
Defined in: packages/auth/src/social/drivers/OAuth2Driver.ts:162
Override to change the full code→SocialUser pipeline.
Apple overrides this to decode an id_token JWT instead of calling a
user-info endpoint.
Parameters
code
string
codeVerifier?
string
Returns
Promise<SocialUser>
Inherited from
_exchangeCode()
protected_exchangeCode(code,codeVerifier?):Promise<TokenBundle>
Defined in: packages/auth/src/social/drivers/OAuth2Driver.ts:434
Parameters
code
string
codeVerifier?
string
Returns
Promise<TokenBundle>
Inherited from
_fetchRaw()
protected_fetchRaw(token):Promise<Record<string,unknown>>
Defined in: packages/auth/src/social/drivers/OAuth2Driver.ts:475
Parameters
token
string
Returns
Promise<Record<string, unknown>>
Inherited from
Redirect
redirectUrl()
redirectUrl(
state,codeVerifier?):string
Defined in: packages/auth/src/social/drivers/OAuth2Driver.ts:293
Build the full authorization URL (for low-level use or testing).
Prefer redirect() in controllers.
When a PKCE codeVerifier is supplied, its S256 challenge is sent as
code_challenge + code_challenge_method (RFC 7636 §4.3).
Parameters
state
string
The CSRF state token to embed in the URL.
codeVerifier?
string
Optional PKCE verifier; when present its S256 challenge is sent.
Returns
string
The fully-built authorization URL.
Inherited from
redirect()
redirect():
void
Defined in: packages/auth/src/social/drivers/OAuth2Driver.ts:336
Generate a CSRF state token, store it in the session, and redirect the user to the provider's authorization page.
The current HTTP context is read automatically from async-local storage — no need to pass it explicitly:
async redirect({ params }: HttpContext) {
return Social.driver(params.provider).redirect();
}
Returns
void
Throws
If called outside an HTTP request; use
.stateless().user(code) for request-less flows.