fb: Bindings to Facebook's API.

[ bsd3, library, web ] [ Propose Tags ] [ Report a vulnerability ]

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/psibi/fb/issues).


[Skip to Readme]

Flags

Automatic Flags
NameDescriptionDefault
debug

Print debugging info.

Disabled

Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

  • No Candidates
Versions [RSS] 0.1, 0.2, 0.2.1, 0.3, 0.3.1, 0.4, 0.4.0.1, 0.4.0.2, 0.5, 0.6, 0.6.0.1, 0.6.0.2, 0.7, 0.7.1, 0.7.2, 0.7.3, 0.7.4, 0.7.4.1, 0.7.5, 0.8, 0.9, 0.9.1, 0.9.3, 0.9.4, 0.9.5, 0.9.5.1, 0.9.6, 0.9.7, 0.11, 0.11.1, 0.11.2, 0.11.2.1, 0.12, 0.12.2, 0.12.3, 0.12.3.4, 0.12.4.1, 0.12.5, 0.12.6, 0.12.7, 0.12.8, 0.12.9, 0.13, 0.13.1, 0.13.2, 0.13.3, 0.13.4, 0.13.4.1, 0.13.4.2, 0.14, 0.14.1, 0.14.2, 0.14.3, 0.14.4, 0.14.4.1, 0.14.5, 0.14.6, 0.14.7, 0.14.7.1, 0.14.8, 0.14.9, 0.14.10, 0.14.11, 0.15.0, 0.15.1, 0.15.1.1, 0.15.2, 1.0, 1.0.1, 1.0.2, 1.0.3, 1.0.4, 1.0.5, 1.0.6, 1.0.7, 1.0.8, 1.0.9, 1.0.10, 1.0.11, 1.0.12, 1.0.13, 1.1.0, 1.1.1, 1.2.0, 1.2.1, 2.0.0, 2.0.1, 2.1.0, 2.1.1, 2.1.1.1
Change log CHANGELOG.md
Dependencies aeson (>=0.8.0.2), attoparsec (>=0.10.4), base (>=4 && <5), bytestring (>=0.9), conduit (>=1.3.0), conduit-extra, cryptonite, data-default, http-client (>=0.4.30), http-conduit (>=2.3.0), http-types, memory, monad-logger, resourcet, text (>=0.11), time (>=1.4), transformers (>=0.2), transformers-base, unliftio, unliftio-core, unordered-containers [details]
License BSD-3-Clause
Copyright Felipe Lessa and Sibi Prabakaran
Author Felipe Lessa, Sibi Prabakaran
Maintainer Sibi <sibi@psibi.in>
Category Web
Home page https://github.com/psibi/fb
Bug tracker https://github.com/psibi/fb/issues
Source repo head: git clone git@github.com:psibi/fb.git
Uploaded by psibi at 2022-04-26T05:28:47Z
Distributions Debian:2.1.1, NixOS:2.1.1.1
Reverse Dependencies 7 direct, 13 indirect [details]
Downloads 73513 total (115 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs available [build log]
Last success reported on 2022-04-26 [all 1 reports]

Readme for fb-2.1.1.1

[back to package description]

fb

Build Status

Haskell bindings to Facebook's API

Example code to get User Access token

{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE ScopedTypeVariables #-}

import Facebook
import Network.HTTP.Client
import Network.HTTP.Client.TLS
import Control.Monad.Trans.Control
import Control.Monad.Trans.Resource
import Control.Monad.IO.Class
import Data.Monoid ((<>))
import Data.ByteString.Char8 (pack)
import Data.Text hiding (pack)
import Data.Aeson
import qualified Data.Text.Encoding as TE

myCreds :: Credentials
myCreds =
  Credentials
  { appName = "Your_APP_Name"
  , appId = "your_app_id"
  , appSecret = "xxxxxxxxxxxxxxxxx"
  , appSecretProof = False
  }

main :: IO ()
main = do
  mgr <- newManager tlsManagerSettings
  let redirectUrl = "https://www.yourdomain.com/"
  runResourceT $
    runFacebookT myCreds mgr $
    do url1 <- getUserAccessTokenStep1 redirectUrl ["public_profile", "email"]
       liftIO $ print ("Paste the url in browser and get code: " <> url1)
       code <- liftIO $ getLine
       token <- getUserAccessTokenStep2 redirectUrl [("code", pack code)]
       liftIO $ print token

Snippet to get your Profile Picture:

       (picture :: Value) <-
         getObject "/me/picture" [("redirect", "0")] (Just token)
       liftIO $ print picture

Snippet to get your firstname, lastname:

       user <- getUser "me" [("fields", "first_name,last_name")] (Just token)
       liftIO $ print user