Contents
- data FacebookT auth m a
- runFacebookT :: Credentials -> Manager -> FacebookT Auth m a -> m a
- runNoAuthFacebookT :: Manager -> FacebookT NoAuth m a -> m a
- data Auth
- data NoAuth
- data Credentials = Credentials {}
- data AccessToken kind where
- UserAccessToken :: UserId -> AccessTokenData -> UTCTime -> AccessToken User
- AppAccessToken :: AccessTokenData -> AccessToken App
- type AccessTokenData = Ascii
- hasExpired :: (Functor m, MonadIO m) => AccessToken kind -> m Bool
- isValid :: ResourceIO m => AccessToken kind -> FacebookT anyAuth m Bool
- data App
- getAppAccessToken :: ResourceIO m => FacebookT Auth m (AccessToken App)
- data User
- type RedirectUrl = Text
- data Permission
- getUserAccessTokenStep1 :: Credentials -> RedirectUrl -> [Permission] -> Text
- getUserAccessTokenStep2 :: ResourceIO m => RedirectUrl -> [Argument] -> FacebookT Auth m (AccessToken User)
- getUserLogoutUrl :: AccessToken User -> RedirectUrl -> Text
- extendUserAccessToken :: ResourceIO m => AccessToken User -> FacebookT Auth m (Either FacebookException (AccessToken User))
- createAction :: ResourceIO m => Action -> [Argument] -> Maybe (AccessToken App) -> AccessToken User -> FacebookT Auth m Id
- data Action
- (#=) :: SimpleType a => Ascii -> a -> Argument
- class SimpleType a where
- encodeFbParam :: a -> Text
- getObject :: (ResourceIO m, FromJSON a) => Ascii -> [Argument] -> Maybe (AccessToken kind) -> FacebookT anyAuth m a
- postObject :: (ResourceIO m, FromJSON a) => Ascii -> [Argument] -> AccessToken kind -> FacebookT Auth m a
- newtype Id = Id {}
- type Argument = (ByteString, ByteString)
- data FacebookException
- = FacebookException {
- fbeType :: Text
- fbeMessage :: Text
- | FbLibraryException {
- fbeMessage :: Text
- = FacebookException {
FacebookT monad transformer
data FacebookT auth m a Source
FacebookT auth m a is this library's monad transformer.
Contains information needed to issue commands and queries to
Facebook. The phantom type auth may be either Auth (you
have supplied your Credentials) or NoAuth (you have not
supplied any Credentials).
Instances
| MonadBase b m => MonadBase b (FacebookT auth m) | |
| MonadBaseControl b m => MonadBaseControl b (FacebookT auth m) | |
| MonadTrans (FacebookT auth) | |
| MonadTransControl (FacebookT auth) | |
| Monad m => Monad (FacebookT auth m) | |
| Functor m => Functor (FacebookT auth m) | |
| MonadFix m => MonadFix (FacebookT auth m) | |
| MonadPlus m => MonadPlus (FacebookT auth m) | |
| Applicative m => Applicative (FacebookT auth m) | |
| Alternative m => Alternative (FacebookT auth m) | |
| MonadIO m => MonadIO (FacebookT auth m) |
Arguments
| :: Credentials | Your app's credentials. |
| -> Manager | Connection manager (see |
| -> FacebookT Auth m a | |
| -> m a |
Run a computation in the FacebookT monad transformer with
your credentials.
runNoAuthFacebookT :: Manager -> FacebookT NoAuth m a -> m aSource
Run a computation in the FacebookT monad without
credentials.
Phantom type stating that you have provided your
Credentials and thus have access to the whole API.
Phantom type stating that you have not provided your
Credentials. This means that you'll be limited about which
APIs you'll be able use.
Authorization and Authentication
Credentials
data Credentials Source
Credentials that you get for your app when you register on Facebook.
Constructors
| Credentials | |
Instances
| 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.
Constructors
| UserAccessToken :: UserId -> AccessTokenData -> UTCTime -> AccessToken User | |
| AppAccessToken :: AccessTokenData -> AccessToken App |
Instances
| 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 -> FacebookT anyAuth 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 => FacebookT Auth m (AccessToken App)Source
Get an app access token from Facebook using your credentials.
User access token
Phantom type used mark an AccessToken as an 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"]
Instances
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.
Arguments
| :: ResourceIO m | |
| => RedirectUrl | Should be exactly the same
as in |
| -> [Argument] | |
| -> FacebookT Auth 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
Arguments
| :: AccessToken User | The user's access token. |
| -> RedirectUrl | URL the user should be directed to in your site domain. |
| -> Text | Logout URL in |
The URL an user should be redirected to in order to log them out of their Facebook session. Facebook will then redirect the user to the provided URL after logging them out. Note that, at the time of this writing, Facebook's policies require you to log the user out of Facebook when they ask to log out of your site.
Note also that Facebook may refuse to redirect the user to the
provided URL if their user access token is invalid. In order
to prevent this bug, we suggest that you use isValid before
redirecting the user to the URL provided by getUserLogoutUrl
since this function doesn't do any validity checks.
extendUserAccessToken :: ResourceIO m => AccessToken User -> FacebookT Auth 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.
Facebook's Open Graph API
Arguments
| :: ResourceIO m | |
| => Action | Action kind to be created. |
| -> [Argument] | Arguments of the action. |
| -> Maybe (AccessToken App) | Optional app access token (optional with respect to this library, since you can't make this mandatory by changing the settings of your action on Facebook). |
| -> AccessToken User | User access token. |
| -> FacebookT Auth m Id |
Creates an Open Graph action on the user's timeline. Returns
the Id of the newly created action. For example:
now <- liftIO getCurrentTime
createAction "cook"
[ "recipe" #= "http://example.com/cookie.html"
, "when" #= now ]
token
An action of your app. Please refer to Facebook's documentation at https://developers.facebook.com/docs/opengraph/keyconcepts/#actions-objects to see how you can create actions.
This is a newtype of Ascii that supports only IsString.
This means that to create an Action you should use the
OverloadedStrings language extension. For example,
{-# LANGUAGE OverloadedStrings #-}
foo token = do
...
createAction "cook" [...] token
(#=) :: SimpleType a => Ascii -> a -> ArgumentSource
Create an Argument with a SimpleType. See the docs on
createAction for an example.
class SimpleType a whereSource
Class for data types that may be represented as a Facebook simple type. (see https://developers.facebook.com/docs/opengraph/simpletypes/).
Methods
encodeFbParam :: a -> TextSource
Instances
| SimpleType Bool | Facebook's simple type |
| SimpleType Double | Facebook's simple type |
| SimpleType Float | Facebook's simple type |
| SimpleType Int | Facebook's simple type |
| SimpleType Int8 | Facebook's simple type |
| SimpleType Int16 | Facebook's simple type |
| SimpleType Int32 | Facebook's simple type |
| SimpleType Word | Facebook's simple type |
| SimpleType Word8 | Facebook's simple type |
| SimpleType Word16 | Facebook's simple type |
| SimpleType Word32 | Facebook's simple type |
| SimpleType Text | Facebook's simple type |
| SimpleType UTCTime | Facebook's simple type |
| SimpleType ZonedTime | Facebook's simple type |
| SimpleType Day | Facebook's simple type |
Raw access to the Graph API
Arguments
| :: (ResourceIO m, FromJSON a) | |
| => Ascii | Path (should begin with a slash |
| -> [Argument] | Arguments to be passed to Facebook |
| -> Maybe (AccessToken kind) | Optional access token |
| -> FacebookT anyAuth m a |
Make a raw GET request to Facebook's Graph API. Returns a
raw JSON Value.
Arguments
| :: (ResourceIO m, FromJSON a) | |
| => Ascii | Path (should begin with a slash |
| -> [Argument] | Arguments to be passed to Facebook |
| -> AccessToken kind | Access token |
| -> FacebookT Auth m a |
Make a raw POST request to Facebook's Graph API. Returns
a raw JSON Value.
The identification code of an object.
type Argument = (ByteString, ByteString)Source
An argument given to an API call.
Exceptions
data FacebookException Source
An exception that may be thrown by functions on this package. Includes any information provided by Facebook.
Constructors
| FacebookException | An exception coming from Facebook. |
Fields
| |
| FbLibraryException | An exception coming from the |
Fields
| |