,}      !"#$%&'()*+,-./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. 2Your application name (e.g. for OpenGraph 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/). #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. Send a HEAD, request just to see if the resposne status  code is 2XX (returns True) or not (returns False). 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 . "=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.  !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';The result object for searchObjects. The type parameter is E expected to be an instance of A.FromJSON, but nothing has been done 8 to assure that Facebook will return the type expected. +&The identification code of an object. . Make a raw GET request to Facebook' s Graph API. / Make a raw POST request to Facebook' s Graph API. 0 Make a raw GET request to the /search endpoint of Facebook s  Graph API. Returns a raw JSON . '()*+,-. Path (should begin with a slash /) #Arguments to be passed to Facebook Optional access token / Path (should begin with a slash /) #Arguments to be passed to Facebook  Access token 0%A Facebook object type to search for The keyword to search for Additional arguments to pass Optional access token '()*+,-./0'()*+,-./0None1An user' s location. 5An user' s gender. 8A 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. E9Get 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. FSearch users by keyword. 123456789:;<=>?@ABCDE User ID or "me". $Arguments to be passed to Facebook. Optional user access token. F123456789:;<=>?@ABCDEF 12345768 9:;<=>?@ABCDEFNoneGA 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. V<Get a page using its ID. The user access token is optional. W<Search pages by keyword. The user access token is optional. GHIJKLMNOPQRSTUVPage ID #Arguments to be passed to Facebook Optional user access token WKeyword to search for Arguments to pass to Facebook Optional user access token GHIJKLMNOPQRSTUVWGHIJKLMNOPQRSTUVW NoneX;Class for data types that may be represented as a Facebook  simple type. (see   ;https://developers.facebook.com/docs/opengraph/simpletypes/). ZFParses an FQL query result. FQL query results are always of the form    { data: [ret1, ret2, ...] } This newtype unwraps the array from the data field 9 automatically for you, so you may write something like:   FQLResult [...] <- fqlQuery ... \0An 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 \ you should use the  OverloadedStrings# language extension. For example, $ {-# LANGUAGE OverloadedStrings #-}   foo token = do  ... # createAction "cook" [...] token ](Creates an Open Graph action on the user's timeline. Returns  the +, of the newly created action. For example:  now <- liftIO getCurrentTime  createAction "cook" = [ "recipe" #= "http://example.com/cookie.html" " , "when" #= now ]  token ^ Creates a  'check-in' and returns its id. Place and , coordinates are both required by Facebook. _9Query the Facebook Graph using FQL. You may want to use  Z! when parsing the returned JSON. ` Create an  with a X. See the docs on  ] 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 + 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.  Since 0.7.1  Since 0.7.1  Since 0.7.1 #XYZ[\]Action 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. ^ Place Id (Latitude, Longitude) Other arguments of the action. Required user access token. _ FQL Query Optional access token ` XYZ[\]^_`XYZ[\]^_` None aA notification for the x object. fWhen data changes and there'!s a valid subscription, Facebook  will POST to your q with a JSON-encoded ) object containing the notifications. A  'RealTimeUpdateNotification a' represents such object where  a is type of the entries (e.g.,  a). If you have a single q for different kinds # of notifications, you may parse a RealTimeUpdateNotification   and then manually parse the  depending on  the value of h. We recommend using |. j:Information returned by Facebook about a real-time update  notification subscription. p%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. q7The 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. r A field of a s that you would like to % receive notifications when changed. s7The type of objects that a real-time update refers to. y8Add or modify a subscription for real-time updates. If 4 there were no previous subscriptions for the given  s&, then a new subscription is created. 6 If there was any previous subscription for the given  s, it'!s overriden by this one (even if 7 the other subscription had a different callback URL). z-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). !abcdefghijklmnopqrstuvwxy'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. z{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. abcdefghijklmnopqrstuvwxyz{|abcdefghijklmnopqrsxwvutyz{|None}  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|  #$ !"%&89:;<=>?@ABCD5761234EFGHIJKLMNOPQRSTUVW]\^_Z[`XYyzsxwvutrqpjklmno{|fghiabcde./+,-0'()*    !"#$%&'()*+,-../011234566789:;<<=>?@ABCDEFGHIJJKLMNOPQRSTUVWXY Z [ \ \ ] ^ _ ` a b b c d e f f g h i i j k l m n o p q r s t u v w x y z{|}~ ] fb-0.11.2FacebookFacebook.TypesFacebook.Monad Facebook.Base Facebook.AuthFacebook.GraphFacebook.Object.UserFacebook.Object.PageFacebook.OpenGraphFacebook.RealTimeArgumentAppKindUserKindUserIdAccessTokenDataAppAccessTokenUserAccessToken AccessToken CredentialsappNameappId appSecretNoAuthAuth FacebookT runFacebookTrunNoAuthFacebookTbeta_runFacebookTbeta_runNoAuthFacebookT mapFacebookTFacebookExceptionFbLibraryExceptionfbeType fbeMessage Permission unPermission RedirectUrlgetAppAccessTokengetUserAccessTokenStep1getUserAccessTokenStep2getUserLogoutUrl hasExpiredisValidextendUserAccessTokenparseSignedRequestSearchResultPage searchResults searchPageIdidCode getObject postObject searchObjects UserLocationuserLocationIduserLocationNameGenderFemaleMaleUseruserIduserName userFirstNameuserMiddleName userLastName userGender userLocale userUsername userVerified userEmail userLocationgetUser searchUsersPagepageIdpageNamepageLink pageCategorypageIsPublished pageCanPost pageLikes pageLocation pagePhone pageCheckins pagePicture pageWebsitepageTalkingAboutCountgetPage searchPages SimpleType encodeFbParam FQLResultAction createAction createCheckinfqlQuery#=#RealTimeUpdateNotificationUserEntry rtuneUserIdrtuneChangedFields rtuneTimeRealTimeUpdateNotification rtunObject rtunEntriesRealTimeUpdateSubscription rtusObjectrtusCallbackUrl rtusFields rtusActiveRealTimeUpdateTokenRealTimeUpdateUrlRealTimeUpdateFieldRealTimeUpdateObject OtherRTUO ErrorsRTUOPageRTUOPermissionsRTUOUserRTUOmodifySubscriptionlistSubscriptions!verifyRealTimeUpdateNotificationsgetRealTimeUpdateNotificationsaccessTokenDataaccessTokenExpiresaccessTokenUserId<>base Data.MonoidmappendFbTiergetCreds getManagerhttp-conduit-1.5.0.3Network.HTTP.Conduit.ManagerManagergetTierwithTierrunResourceInFbBeta Production withManager$fMonadBaseControlbFacebookT$fMonadTransControlFacebookT$fMonadBasebFacebookTtransformers-0.3.0.0Control.Monad.Trans.Classlift ToSimpleQuerytsqfbreqNetwork.HTTP.Conduit.RequestRequestdata-default-0.5.0 Data.DefaultdefasJsonNetwork.HTTP.Conduit.ResponseResponseNetwork.HTTP.ConduithttpasBSbytestring-0.9.2.1Data.ByteString.Internal ByteStringfbhttp httpCheck$fExceptionFacebookException$fFromJSONFacebookException$fToSimpleQueryAccessToken$fToSimpleQueryCredentials text-0.11.2.3Data.Text.InternalText Data.StringIsString $fFromJSONSignedRequestAlgorithm$fIsStringPermission$fShowPermission aeson-0.6.0.2Data.Aeson.Types.InternalValue$fFromJSONPager$fFromJSONSearchResultPage $fFromJSONId$fFromJSONUserLocation$fToJSONGender$fFromJSONGender$fFromJSONUser$fFromJSONPage$fSimpleType[]$fSimpleTypeId$fSimpleTypeByteString$fSimpleTypeText$fSimpleTypeWord32$fSimpleTypeInt32$fSimpleTypeWord16$fSimpleTypeInt16$fSimpleTypeWord8$fSimpleTypeInt8$fSimpleTypeWord$fSimpleTypeInt$fSimpleTypeDouble$fSimpleTypeFloat$fSimpleTypeZonedTime$fSimpleTypeUTCTime$fSimpleTypeDay$fSimpleTypeBool $fReadAction $fOrdAction $fEqActionunAction$fFromJSONFQLResult$fIsStringAction $fShowAction-$fFromJSONRealTimeUpdateNotificationUserEntry$$fFromJSONRealTimeUpdateNotification$$fFromJSONRealTimeUpdateSubscription$fToJSONRealTimeUpdateObject$fFromJSONRealTimeUpdateObject