- data Credentials = Credentials {
- clientId :: Ascii
- clientSecret :: Ascii
- data AccessToken kind where
- type AccessTokenData = Ascii
- hasExpired :: (Functor m, MonadIO m) => AccessToken kind -> m Bool
- isValid :: ResourceIO m => AccessToken kind -> Manager -> ResourceT m Bool
- data App
- getAppAccessToken :: ResourceIO m => Credentials -> Manager -> ResourceT m (AccessToken App)
- data User
- type RedirectUrl = Text
- data Permission
- getUserAccessTokenStep1 :: Credentials -> RedirectUrl -> [Permission] -> Text
- getUserAccessTokenStep2 :: ResourceIO m => Credentials -> RedirectUrl -> SimpleQuery -> Manager -> ResourceT m (AccessToken User)
- extendUserAccessToken :: ResourceIO m => Credentials -> AccessToken User -> Manager -> ResourceT m (Either FacebookException (AccessToken User))
- data FacebookException
- = FacebookException {
- fbeType :: Text
- fbeMessage :: Text
- | FbLibraryException {
- fbeMessage :: Text
- = FacebookException {
Authorization and Authentication
Credentials
data Credentials Source
Credentials that you get for your app when you register on Facebook.
Credentials | |
|
Eq Credentials | |
Ord Credentials | |
Show Credentials | |
Typeable Credentials | |
ToSimpleQuery Credentials |
Access token
data AccessToken kind whereSource
An access token. While you can make some API calls without an access token, many require an access token and some will give you more information with an appropriate access token.
There are two kinds of access tokens:
- User access token
- An access token obtained after an user accepts your application. Let's you access more information about that user and act on their behalf (depending on which permissions you've asked for).
- App access token
- An access token that allows you to take administrative actions for your application.
These access tokens are distinguished by the phantom type on
AccessToken
, which can be User
or App
.
UserAccessToken :: AccessTokenData -> UTCTime -> AccessToken User | |
AppAccessToken :: AccessTokenData -> AccessToken App |
Typeable1 AccessToken | |
Eq (AccessToken kind) | |
Ord (AccessToken kind) | |
Show (AccessToken kind) | |
ToSimpleQuery (AccessToken kind) |
type AccessTokenData = AsciiSource
The access token data that is passed to Facebook's API calls.
hasExpired :: (Functor m, MonadIO m) => AccessToken kind -> m BoolSource
True
if the access token has expired, otherwise False
.
isValid :: ResourceIO m => AccessToken kind -> Manager -> ResourceT m BoolSource
True
if the access token is valid. An expired access
token is not valid (see hasExpired
). However, a non-expired
access token may not be valid as well. For example, in the
case of an user access token, they may have changed their
password, logged out from Facebook or blocked your app.
App access token
getAppAccessToken :: ResourceIO m => Credentials -> Manager -> ResourceT m (AccessToken App)Source
Get an app access token from Facebook using your credentials.
User access token
type RedirectUrl = TextSource
URL where the user is redirected to after Facebook authenticates the user authorizes your application. This URL should be inside the domain registered for your Facebook application.
data Permission Source
A permission that is asked for the user when he authorizes your app. Please refer to Facebook's documentation at https://developers.facebook.com/docs/reference/api/permissions/ to see which permissions are available.
This is a newtype
of Text
that supports only IsString
.
This means that to create a Permission
you should use the
OverloadedStrings
language extension. For example,
{-# LANGUAGE OverloadedStrings #-} perms :: [Permission] perms = ["user_about_me", "email", "offline_access"]
getUserAccessTokenStep1 :: Credentials -> RedirectUrl -> [Permission] -> TextSource
The first step to get an user access token. Returns the
Facebook URL you should redirect you user to. Facebook will
authenticate the user, authorize your app and then redirect
the user back into the provider RedirectUrl
.
:: ResourceIO m | |
=> Credentials | |
-> RedirectUrl | Should be exactly the same
as in |
-> SimpleQuery | |
-> Manager | |
-> ResourceT m (AccessToken User) |
The second step to get an user access token. If the user is
successfully authenticate and they authorize your application,
then they'll be redirected back to the RedirectUrl
you've
passed to getUserAccessTokenStep1
. You should take the
request query parameters passed to your RedirectUrl
and give
to this function that will complete the user authentication
flow and give you an
.
AccessToken
User
extendUserAccessToken :: ResourceIO m => Credentials -> AccessToken User -> Manager -> ResourceT m (Either FacebookException (AccessToken User))Source
Extend the expiration time of an user access token (see
https://developers.facebook.com/docs/offline-access-deprecation/).
Returns Left exc
if there is an error while extending, or
Right token
with the new user access token (which could have
the same data and expiration time as before, but you can't
assume this). Note that expired access tokens can't be
extended, only valid tokens.
Exceptions
data FacebookException Source
An exception that may be thrown by functions on this package. Includes any information provided by Facebook.
FacebookException | An exception coming from Facebook. |
| |
FbLibraryException | An exception coming from the |
|