-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Bindings to Facebook's API. -- -- This package exports bindings to Facebook's APIs (see -- http://developers.facebook.com/). Does not have any external -- dependencies and tries to use as little resources (such as memory, -- sockets and CPU) as possible by using packages such as aeson, -- attoparsec, bytestring, conduit, -- http-conduit, text and others. -- -- While we would like to have a complete binding to Facebook's API, this -- package is being developed on demand. If you need something that has -- not been implemented yet, please send a pull request or file an issue -- on GitHub (https://github.com/meteficha/fb/issues). @package fb @version 0.2 module Facebook -- | Credentials that you get for your app when you register on Facebook. data Credentials Credentials :: Ascii -> Ascii -> Credentials -- | Your application ID. clientId :: Credentials -> Ascii -- | Your application secret key. clientSecret :: Credentials -> Ascii -- | 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: -- -- -- -- These access tokens are distinguished by the phantom type on -- AccessToken, which can be User or App. data AccessToken kind UserAccessToken :: AccessTokenData -> UTCTime -> AccessToken User AppAccessToken :: AccessTokenData -> AccessToken App -- | The access token data that is passed to Facebook's API calls. type AccessTokenData = Ascii -- | True if the access token has expired, otherwise -- False. hasExpired :: (Functor m, MonadIO m) => AccessToken kind -> m Bool -- | 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. isValid :: ResourceIO m => AccessToken kind -> Manager -> ResourceT m Bool -- | Phantom type used mark an AccessToken as an app access token. data App -- | Get an app access token from Facebook using your credentials. getAppAccessToken :: ResourceIO m => Credentials -> Manager -> ResourceT m (AccessToken App) -- | Phantom type used mark an AccessToken as an user access token. data User -- | 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. type RedirectUrl = Text -- | 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"]
--   
data Permission -- | 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. getUserAccessTokenStep1 :: Credentials -> RedirectUrl -> [Permission] -> Text -- | 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. getUserAccessTokenStep2 :: ResourceIO m => Credentials -> RedirectUrl -> SimpleQuery -> Manager -> ResourceT m (AccessToken User) -- | 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. extendUserAccessToken :: ResourceIO m => Credentials -> AccessToken User -> Manager -> ResourceT m (Either FacebookException (AccessToken User)) -- | An exception that may be thrown by functions on this package. Includes -- any information provided by Facebook. data FacebookException -- | An exception coming from Facebook. FacebookException :: Text -> Text -> FacebookException fbeType :: FacebookException -> Text fbeMessage :: FacebookException -> Text -- | An exception coming from the fb package's code. FbLibraryException :: Text -> FacebookException fbeMessage :: FacebookException -> Text