úÎHÔ9iµ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´ Noneµ (Internal) newtype for ¶ that follows Facebook's % conventions of JSON parsing. While aeson expects a format  of %FT%T%Q*, Facebook gives time values formatted as  %FT%T%z. "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. ü is a newtype of é ý 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. D'()*+,-./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 IJøKLúMûüýþÿ     ''()*+,-./0123456789:;<=>?@ABCDEFGHIJKLM,'()*+,-./0123456789:;<=>?@ABCDEFGHIJøKLúMûüýþÿ     NoneNA 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_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 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 _`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. _`_` Nonea2Information about the user who made the check-in. eA 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. m5Get a checkin from its ID. The user access token is > optional, but when provided more information can be returned  back by Facebook. n Creates a  'check-in' and returns its ID. Place and , coordinates are both required by Facebook. abcdefghijklm Checkin ID. $Arguments to be passed to Facebook. Optional user access token. n Place ID.  Coordinates. Other arguments of the action. Required user access token. abcdefghijklmnabcdefghijklmn NoneoAn user' s gender. rA 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. 9Get 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. €Search users by keyword. .Get a list of check-ins made by a given user. opqrstuvwxyz{|}~ User ID or "me". $Arguments to be passed to Facebook. Optional user access token. € User ID or "me". $Arguments to be passed to Facebook. User access token.  !"opqrstuvwxyz{|}~€oqpr 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 Ÿ@Specify if the app is to be installed on the new test user. If = it is, then you must tell what permissions should be given.   Uses Facebook'/s default. It seems that this is equivalent to  CreateTestUserInstalled [], but Facebook's documentation is  not clear about it. ¤AData type used to hold information of a new test user. This type $ also accepts a Data.Default value. ©A Facebook test user. *Construct a query from a ¤. °Create a new test user. ±Get a list of test users. ²Remove an existing test user. ³1Make a friend connection between two test users. This is how Facebook'.s API work: two calls must be made. The first  call has the format: "/userA_id/friends/userB_id" with the D access token of user A as query parameter. The second call has the  format: "/userB_id/friends/userA_id" with the access token of D user B as query parameter. The first call creates a friend request 1 and the second call accepts the friend request. ´ Create an  from a ©. It' s incomplete 5 because it will not have the right expiration time. +Same as F$, but instead of parsing the result ( as a JSON, it tries to parse either as true or false. * Used only by the Test User API bindings. ,Default instance for Ÿ. -Default instance for ¤. Ÿ ¡¢£¤¥¦§¨©ª«¬­®¯*°How the test user should be  created. Access token for your app. ±Access token for your app. ²The TestUser to be removed. Access token for your app. ³´+ Path (should begin with a slash /). $Arguments to be passed to Facebook. Optional access token. ,-.Ÿ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´ Ÿ£¡ ¢¤¥¦§¨©ª«¬­®¯*°±²³´+,-.Noneµ  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´·  #$ !"%&rstuvwxyz{|}~oqp€NOPQRSTUVWXYZ[\]^_`efghijklabcdmnM<=789:;/0123456+,-.'()*>?@ABIJKLš›”™˜—–•“’‘‹ŒŽœ‡ˆ‰Š‚ƒ„…†ž±²°³´©ª«¬­®¯¤¥¦§¨Ÿ£¡ ¢FGHCDE/ !"#"$%&'()*+,-./0112344567789:;<=>>?@ABCDDEFGHHIJKLMNOPQRRSTUVWXYZ[\]^_`abc d d e f g g h i j k l m n o p q r s s t u v w x y z { | } ~  € ‚ ‚ ƒ „ … † † ‡ ˆ ‰ ‰ Š ‹ Œ Ž   ‘ ’ “ ” • – — ˜ ™ š › œ  œ ž Ÿ     ¡ ¢ £ ¤ ¤ ¥ ¦ § ¨ © ª « ¬ ­ ®¯°±²³´µ¶·¸¹¯º»¼½¾·¿ÀÁÂÃÄÅÆÇÈÉʽËÌÍÎÃÄÏÐÑÒÓÔÕÖרÃÙÚÛÜÝÞÃÙßÃàáâãäåæçèéêëìíîïðñò·óôõö÷øù÷øúûû&°üýþÿ·      !"#$%&'()b*+, - . / 0 1 2 3 4 5 6 7 8 9 : ; < => fb-0.12.7FacebookFacebook.TypesFacebook.Monad Facebook.Base Facebook.AuthFacebook.GraphFacebook.Object.PageFacebook.Object.ActionFacebook.Object.CheckinFacebook.Object.UserFacebook.RealTime Facebook.FQLFacebook.TestUsersArgumentAppKindUserKindUserIdAccessTokenDataAppAccessTokenUserAccessToken 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 searchPagesAction createAction CheckinFrom checkinFromIdcheckinFromNameCheckin checkinId checkinFrom checkinPlacecheckinCreatedTime checkinTagscheckinMessage getCheckin createCheckinGenderFemaleMaleUseruserIduserName userFirstNameuserMiddleName userLastName userGender userLocale userUsername userVerified userEmail userLocationgetUser searchUsersgetUserCheckins#RealTimeUpdateNotificationUserEntry rtuneUserIdrtuneChangedFields rtuneTimeRealTimeUpdateNotification rtunObject rtunEntriesRealTimeUpdateSubscription rtusObjectrtusCallbackUrl rtusFields rtusActiveRealTimeUpdateTokenRealTimeUpdateUrlRealTimeUpdateFieldRealTimeUpdateObject OtherRTUO ErrorsRTUOPageRTUOPermissionsRTUOUserRTUOmodifySubscriptionlistSubscriptions!verifyRealTimeUpdateNotificationsgetRealTimeUpdateNotificationsfqlQueryCreateTestUserInstalledCreateTestUserFbDefaultctuiPermissionsCreateTestUserNotInstalledCreateTestUser ctuInstalledctuName ctuLocaleTestUsertuId tuAccessToken tuLoginUrltuEmail tuPasswordcreateTestUser getTestUsersremoveTestUsermakeFriendConnincompleteTestUserAccessToken FbUTCTime time-1.4.0.1Data.Time.Clock.UTCUTCTimeaccessTokenDataaccessTokenExpiresaccessTokenUserId<>base Data.Monoidmappend unFbUTCTime$fFromJSONFbUTCTimeFbTierFbDatafbdCredsGHC.Err undefinedgetCreds getManagerhttp-conduit-1.6.1Network.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.10.0.0Data.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 decodeLenientSignedRequestAlgorithmData.Time.ClockgetCurrentTime $fFromJSONSignedRequestAlgorithm$fIsStringPermission$fShowPermission aeson-0.6.0.2Data.Aeson.Types.InternalValue Data.MaybeNothing fetchHelperconduit-0.5.2.4Data.Conduit.InternalSourcefetchAllHelper$fSimpleType[]$fSimpleTypePermission$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 $fReadAction $fOrdAction $fEqActionunAction$fIsStringAction $fShowAction$fFromJSONCheckinFrom$fFromJSONCheckin$fToJSONGender$fFromJSONGender$fFromJSONUsergetSubscriptionsPathrtuoToBS-$fFromJSONRealTimeUpdateNotificationUserEntry$$fFromJSONRealTimeUpdateNotification$$fFromJSONRealTimeUpdateSubscription$fToJSONRealTimeUpdateObject$fFromJSONRealTimeUpdateObjectcreateTestUserQueryArgs getObjectBool $fDefaultCreateTestUserInstalled$fDefaultCreateTestUser$fFromJSONTestUser