Pragmatic Authentication Library: Facebook workflows
Collection of Facebook workflows for PAL.
1. Facebook Login (OAuth2 Authorization Code Grant) workflow
For details, read the Facebook documentation.
Options
You can configure the workflow by passing options below into pal:new/2
or pal:group/2
functions:
client_id
(required) - The client ID obtained from the App dashboard.client_secret
(required) - The client secret obtained from the App Dashboard.redirect_uri
(required) - The client redirection endpoint. After completing its interaction with the resource owner, the authorization server directs the resource owner's user-agent to this uri.scope
(optional) - A list of requested permissions.request_options
(optional) - Options for the hackney HTTP client.includes
(optional) - Parts of authentication schema to be processed by the workflow. All by default,[uid, credentials, info, extra, rules]
.
Input Data
code
- The authorization code.state
- The state was previously passed to the authentication provider.error
If the request fails due to a missing, invalid, or mismatching redirection URI, or if the client identifier is missing or invalid.
Authentication Schema
An successful execution of pal:authenticate/{2,3}
function returns
the authentication schema below.
#{access_token => <<"...">>,
expires_in => <<"5183998">>}
See a complete example with PAL and Cowboy HTTP server here.
2. Facebook User (user's profile data) workflow
Options
You can configure the workflow by passing options below into pal:new/2
or pal:group/2
functions:
request_options
(optional) - Options for the hackney HTTP client.includes
(optional) - Parts of authentication schema to be processed by the workflow. All by default,[uid, credentials, info, extra, rules]
.
Input Data
access_token
- An access Token obtained using thepal_facebook_oauth2_authcode
workflow.
Authentication Schema
An successful execution of pal:authenticate/{2,3}
function returns
the authentication schema below.
#{uid => <<"...">>,
info =>
#{name => <<"John Doe">>,
first_name => <<"John">>,
last_name => <<"Doe">>,
gender => <<"male">>,
email => <<"john@example.com">>,
image => <<"https://graph.facebook.com/...">>,
uri => <<"https://www.facebook.com/...">>}}
See a complete example with PAL and Cowboy HTTP server here.
License
The source code is provided under the terms of the MIT license.