&'v      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ None"An argument given to an API call. Phantom type used mark an  as an app access  token. Phantom type used mark an  as an user access  token. A Facebook user id such as  1008905713901. 0The access token data that is passed to Facebook's API  calls. Type synonym for  . Type synonym for  . <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 two kinds of access tokens are distinguished by the  phantom type on , which can be  or  . ;Credentials that you get for your app when you register on  Facebook. 3Your application name (e.g. for Open Graph calls). Your application ID. Your application secret key. Get the access token data. 9Expire time of an access token. It may never expire, in  which case it will be Nothing. )Get the user ID of an user access token.  Synonym for .       None(Which Facebook tier should be used (see   2https://developers.facebook.com/support/beta-tier/). Internal data kept inside . Can be ! #Phantom type stating that you have not provided your   . This means that you'll be limited about which  APIs you'll be able use. 1Phantom type stating that you have provided your   ( and thus have access to the whole API. 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  (you  have supplied your  ) or  (you have not  supplied any  ). Run a computation in the  monad transformer with  your credentials. Run a computation in the  monad without  credentials. Same as , but uses Facebook's beta tier (see   2https://developers.facebook.com/support/beta-tier/). Same as , but uses Facebook' s beta tier  (see  2https://developers.facebook.com/support/beta-tier/).  Get the user's credentials. Get the . Get the . (Run a pure function that depends on the  being used. Run a  ResourceT inside a . #Transform the computation inside a . Your app's credentials. Connection manager (see ). None 5An exception that may be thrown by functions on this : package. Includes any information provided by Facebook. An exception coming from the fb package's code. #An exception coming from Facebook. :Internal class for types that may be passed on queries to  Facebook's API. 7Prepend to the given query the parameters necessary to " pass this data type to Facebook. A plain ) to a Facebook API. Use this instead of   when creating new s for Facebook. Converts a plain  coming from  into a  JSON value. Converts a plain  into a string . Same as &, but tries to parse errors and throw  meaningful s. Try to parse the WWW-Authenticate header of a Facebook  response. Send a HEAD, request just to see if the resposne status  code is 2XX (returns True) or not (returns False). True if the the Status is ok (i.e. 2XX). Path. Access token.  Parameters. None ;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  that supports only .  This means that to create a  you should use the  OverloadedStrings# language extension. For example, $ {-# LANGUAGE OverloadedStrings #-}   perms :: [Permission] 6 perms = ["user_about_me", "email", "offline_access"] Retrieves the  back from a  . Most of  the time you won')t need to use this function, but you may  need it if you're a library author. 3URL 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. 1Get an app access token from Facebook using your  credentials. 9The 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 . !=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  you've  passed to  . You should take the ) request query parameters passed to your  and give = to this function that will complete the user authentication  flow and give you an . 5Attoparsec parser for user access tokens returned by @ Facebook as a query string. Returns an user access token with  a broken . "=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 $ before - redirecting the user to the URL provided by "  since this function doesn't do any validity checks. #True, if the access token has expired, otherwise False. $True2 if the access token is valid. An expired access  token is not valid (see #). 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 9 password, logged out from Facebook or blocked your app. %8Extend the expiration time of an user access token (see   @https://developers.facebook.com/docs/offline-access-deprecation/,   ?https://developers.facebook.com/roadmap/offline-access-removal/). 7 Only short-lived user access tokens may extended into ? long-lived user access tokens, you must get a new short-lived 6 user access token if you need to extend a long-lived  one. 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'4t assume this). Note that expired access tokens can't be  extended, only valid tokens. &!Parses a Facebook signed request  ( Chttps://developers.facebook.com/docs/authentication/signed_request/), : verifies its authencity and integrity using the HMAC and  decodes its JSON object. The base64-bytestring package provides two different  decoding functions for  base64url:  and  #. The former is too strict for us = since Facebook does add padding to its signed requests, but 7 the latter is too lenient and will accept *anything*. <Instead of being too lenient, we just use this function add 7 the padding base to the encoded string, thus allowing   to chew it.  !Should be exactly the same  as in  . Query parameters.  "The user's access token. &URL the user should be directed to in  your site domain. Logout URL in  https://www.facebook.com/ (or on  https://www.beta.facebook.com/ when  using the beta tier). #$%& Encoded Facebook signed request  !"#$%& !"#$%&None'' A tag (i.e. "I'll tag you on my post"). )Who is tagged. *Name of the tagged person. +Geographical coordinates. /A geographical location. 78Information about a place. This is not a Graph Object,  instead it'1s just a field of a Object. (Not to be confused  with the Page object.) 9Page ID. :Page name. <;Class for data types that may be represented as a Facebook  simple type. (see   ;https://developers.facebook.com/docs/opengraph/simpletypes/). >:Many Graph API results are returned as a JSON object with  the following structure:    {  "data": [  ...item 1...,  :  ...item n...  ],  "paging": {  "previous": "http:...link to previous page...",  "next": "http:...link to next page..."  }  }  Only the "data"* field is required, the others may or may  not appear. A Pager a2 datatype encodes such result where each item has  type a. You may use functions I and  J" to navigate through the results. C&The identification code of an object. F Make a raw GET request to Facebook' s Graph API. G Make a raw POST request to Facebook' s Graph API. H Make a raw GET request to the /search endpoint of Facebook s  Graph API. Returns a raw JSON . I"Tries to fetch the next page of a > . Returns   whenever the current Pager does not have a  B. J&Tries to fetch the previous page of a > . Returns   whenever the current Pager does not have a  A. (Internal) See I and J. K,Tries to fetch all next pages and returns a  with  all results. The  will include the results from < this page as well. Previous pages will not be considered. ' Next pages will be fetched on-demand. L0Tries to fetch all previous pages and returns a   with all results. The  will include the results 1 from this page as well. Next pages will not be 8 considered. Previous pages will be fetched on-demand. (Internal) See K and L. M Create an  with a <. See the docs on   createAction for an example. 9A comma-separated list of simple types. This definition  doesn'4t work everywhere, just for a few combinations that  Facebook uses (e.g. [Int]#). Also, encoding a list of lists = is the same as encoding the concatenation of all lists. In > other words, this instance is here more for your convenience ) than to make sure your code is correct.  An object's C code. Facebook's simple type String. Facebook's simple type String. Facebook's simple type Integer. Facebook's simple type Integer. Facebook's simple type Integer. Facebook's simple type Integer. Facebook's simple type Integer. Facebook's simple type Integer. Facebook's simple type Integer. Facebook's simple type Integer. Facebook's simple type Float. Facebook's simple type Float% with less precision than supported. Facebook's simple type DateTime. Facebook's simple type DateTime. Facebook's simple type DateTime with only the date. Facebook's simple type Boolean. C'()*+,-./0123456789:;<=>?@ABCDEF Path (should begin with a slash /) #Arguments to be passed to Facebook Optional access token G Path (should begin with a slash /) #Arguments to be passed to Facebook  Access token H%A Facebook object type to search for The keyword to search for Additional arguments to pass Optional access token IJKLM''()*+,-./0123456789:;<=>?@ABCDEFGHIJKLM+'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNoneNA Facebook page (see   8https://developers.facebook.com/docs/reference/api/page/). NOTE:: Does not yet support all fields. Please file an issue if  you need any other fields. ]<Get a page using its ID. The user access token is optional. ^<Search pages by keyword. The user access token is optional. NOPQRSTUVWXYZ[\]Page ID #Arguments to be passed to Facebook Optional user access token ^Keyword to search for Arguments to pass to Facebook Optional user access token NOPQRSTUVWXYZ[\]^NOPQRSTUVWXYZ[\]^None_An user' s gender. bA Facebook user profile (see   8https://developers.facebook.com/docs/reference/api/user/). NOTE: We still don'"t support all fields supported by @ Facebook. Please fill an issue if you need access to any other  fields. o9Get an user using his user ID. The user access token is > optional, but when provided more information can be returned ' back by Facebook. The user ID may be "me" , in which < case you must provide an user access token and information  about the token's owner is given. pSearch users by keyword. _`abcdefghijklmno User ID or "me". $Arguments to be passed to Facebook. Optional user access token. p_`abcdefghijklmnop_a`b cdefghijklmnop Noneq0An action of your app. Please refer to Facebook's  documentation at   Khttps://developers.facebook.com/docs/opengraph/keyconcepts/#actions-objects $ to see how you can create actions.  This is a newtype of  that supports only .  This means that to create an q you should use the  OverloadedStrings# language extension. For example, $ {-# LANGUAGE OverloadedStrings #-}   foo token = do  ... # createAction "cook" [...] token r(Creates an Open Graph action on the user's timeline. Returns  the C, of the newly created action. For example:  now <- liftIO getCurrentTime  createAction "cook" = [ "recipe" #= "http://example.com/cookie.html" " , "when" #= now ]  token  Since 0.7.1  Since 0.7.1  Since 0.7.1 qrAction kind to be created. Arguments of the action. )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). Required user access token. qrqr Nones2Information about the user who made the check-in. wA Facebook check-in (see   ;https://developers.facebook.com/docs/reference/api/checkin/). NOTE: We still don'"t support all fields supported by @ Facebook. Please fill an issue if you need access to any other  fields. 5Get a checkin from its ID. The user access token is > optional, but when provided more information can be returned  back by Facebook.  Creates a  'check-in' and returns its ID. Place and , coordinates are both required by Facebook. stuvwxyz{|}~ Checkin ID. $Arguments to be passed to Facebook. Optional user access token.  Place ID.  Coordinates. Other arguments of the action. Required user access token. stuvwxyz{|}~stuvwxyz{|}~ None A notification for the  object. When data changes and there'!s a valid subscription, Facebook  will POST to your  with a JSON-encoded ) object containing the notifications. A  'RealTimeUpdateNotification a' represents such object where  a is type of the entries (e.g.,  ). If you have a single  for different kinds # of notifications, you may parse a RealTimeUpdateNotification   and then manually parse the  depending on  the value of . We recommend using . :Information returned by Facebook about a real-time update  notification subscription. %A token that is sent back by Facebook's servers to your : server in order to verify that you really were trying to  modify your subscription. 7The URL on your server that will receive the real-time # updates. Please refer to Facebook's documentation in order to ' see what this URL needs to implement.  A field of a  that you would like to % receive notifications when changed. 7The type of objects that a real-time update refers to. 8Add or modify a subscription for real-time updates. If 4 there were no previous subscriptions for the given  &, then a new subscription is created. 6 If there was any previous subscription for the given  , it'!s overriden by this one (even if 7 the other subscription had a different callback URL).  (Internal) Get the subscription's path. -List current real-time update subscriptions. Verifies the input'#s authenticity (i.e. it comes from = Facebook) and integrity by calculating its HMAC-SHA1 (using ; your application secret as the key) and verifying that it ( matches the value from the HTTP request's X-Hub-Signature  header's value. If it' s not valid, Nothing is returned,  otherwise  Just data is returned where data is the original  data. Same as  but also parses  the response as JSON. Returns Nothing if either the % signature is invalid or the data can't be parsed (use   if you need to distinguish & between these two error conditions). #'Type of objects whose subscription you  and to add or modify. "Fields that you are interested in  receiving updates. Your callback URL. A verification token. Access token for your app. X-Hub-Signature HTTP header' s value. .Request body with JSON-encoded notifications. X-Hub-Signature HTTP header' s value. .Request body with JSON-encoded notifications.         None$Query the Facebook Graph using FQL.  FQL Query Optional access token None  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  #$ !"%&bcdefghijklmn_a`opNOPQRSTUVWXYZ[\]^qrwxyz{|}~stuvM<=789:;/0123456+,-.'()*>?@ABIJKLFGHCDE   !"!#$%&'()*+,-./0012334566789:;<==>?@ABCCDEFGGHIJKLMNOPQQRSTUVWXYZ[\]^_`abcddefghijklmnopq r s t t u v w w x y z { | } ~                 %         r             fb-0.12.2FacebookFacebook.TypesFacebook.Monad Facebook.Base Facebook.AuthFacebook.GraphFacebook.Object.PageFacebook.Object.UserFacebook.Object.ActionFacebook.Object.CheckinFacebook.RealTime Facebook.FQLArgumentAppKindUserKindUserIdAccessTokenDataAppAccessTokenUserAccessToken AccessToken CredentialsappNameappId appSecretNoAuthAuth FacebookT runFacebookTrunNoAuthFacebookTbeta_runFacebookTbeta_runNoAuthFacebookT mapFacebookTFacebookExceptionFbLibraryExceptionfbeType fbeMessage Permission unPermission RedirectUrlgetAppAccessTokengetUserAccessTokenStep1getUserAccessTokenStep2getUserLogoutUrl hasExpiredisValidextendUserAccessTokenparseSignedRequestTagtagIdtagNameGeoCoordinateslatitude longitudeLocationlocationStreet locationCity locationStatelocationCountry locationZiplocationCoordsPlaceplaceId placeName placeLocation SimpleType encodeFbParamPager pagerData pagerPrevious pagerNextIdidCode getObject postObject searchObjects fetchNextPagefetchPreviousPagefetchAllNextPagesfetchAllPreviousPages#=PagepageIdpageNamepageLink pageCategorypageIsPublished pageCanPost pageLikes pageLocation pagePhone pageCheckins pagePicture pageWebsitepageTalkingAboutCountgetPage searchPagesGenderFemaleMaleUseruserIduserName userFirstNameuserMiddleName userLastName userGender userLocale userUsername userVerified userEmail userLocationgetUser searchUsersAction createAction CheckinFrom checkinFromIdcheckinFromNameCheckin checkinId checkinFrom checkinPlacecheckinCreatedTime checkinTagscheckinMessage getCheckin createCheckin#RealTimeUpdateNotificationUserEntry rtuneUserIdrtuneChangedFields rtuneTimeRealTimeUpdateNotification rtunObject rtunEntriesRealTimeUpdateSubscription rtusObjectrtusCallbackUrl rtusFields rtusActiveRealTimeUpdateTokenRealTimeUpdateUrlRealTimeUpdateFieldRealTimeUpdateObject OtherRTUO ErrorsRTUOPageRTUOPermissionsRTUOUserRTUOmodifySubscriptionlistSubscriptions!verifyRealTimeUpdateNotificationsgetRealTimeUpdateNotificationsfqlQueryaccessTokenDataaccessTokenExpiresaccessTokenUserId<>base Data.MonoidmappendFbTierFbDatafbdCredsGHC.Err undefinedgetCreds getManagerhttp-conduit-1.6.0.3Network.HTTP.Conduit.ManagerManagergetTierwithTierrunResourceInFbBeta Production fbdManagerfbdTierFunF withManager$fMonadBaseControlbFacebookT$fMonadTransControlFacebookT$fMonadBasebFacebookTtransformers-0.3.0.0Control.Monad.Trans.Classlift ToSimpleQuerytsqfbreqNetwork.HTTP.Conduit.TypesRequestdata-default-0.5.0 Data.DefaultdefasJsonResponseNetwork.HTTP.ConduithttpasBSbytestring-0.9.2.1Data.ByteString.Internal ByteStringfbhttpwwwAuthenticateParser httpCheckisOkay asJsonHelper fbhttpHelper$fExceptionFacebookException$fFromJSONFacebookException$fToSimpleQueryAccessToken$fToSimpleQueryCredentials text-0.11.2.3Data.Text.InternalText Data.StringIsStringuserAccessTokenParseraddBase64Paddingbase64-bytestring-1.0.0.0Data.ByteString.Base64.URLdecode decodeLenientSignedRequestAlgorithm time-1.4.0.1Data.Time.ClockgetCurrentTime $fFromJSONSignedRequestAlgorithm$fIsStringPermission$fShowPermission aeson-0.6.0.2Data.Aeson.Types.InternalValue Data.MaybeNothing fetchHelperconduit-0.5.2.4Data.Conduit.InternalSourcefetchAllHelper$fSimpleType[]$fSimpleTypeId$fSimpleTypeByteString$fSimpleTypeText$fSimpleTypeWord32$fSimpleTypeInt32$fSimpleTypeWord16$fSimpleTypeInt16$fSimpleTypeWord8$fSimpleTypeInt8$fSimpleTypeWord$fSimpleTypeInt$fSimpleTypeDouble$fSimpleTypeFloat$fSimpleTypeZonedTime$fSimpleTypeUTCTime$fSimpleTypeDay$fSimpleTypeBoolshowBS $fFromJSONTag$fSimpleTypeGeoCoordinates$fFromJSONGeoCoordinates$fFromJSONLocation$fFromJSONPlace$fFromJSONPager $fFromJSONId$fFromJSONPage$fToJSONGender$fFromJSONGender$fFromJSONUser $fReadAction $fOrdAction $fEqActionunAction$fIsStringAction $fShowAction$fFromJSONCheckinFrom$fFromJSONCheckingetSubscriptionsPathrtuoToBS-$fFromJSONRealTimeUpdateNotificationUserEntry$$fFromJSONRealTimeUpdateNotification$$fFromJSONRealTimeUpdateSubscription$fToJSONRealTimeUpdateObject$fFromJSONRealTimeUpdateObject