exfacebook v0.0.5 Exfacebook

Exfacebook implements Graph Api:

  • Exfacebook.Api - graph calls using access token to Facebook Graph API, depends on respnse it returns decoded to JSON values.

  • Exfacebook.Config - specify api_version and http requests for hackney.

Configuration example(optional variables):

config :exfacebook,
  api_version: "v2.6",
  http_options: [recv_timeout: :infinity],
  id: "your_app_id_optional",
  secret: "your_app_secret_optiona"

How to use API?

Examples:

  • start_link - if you want to have worker you can start Exfacebook GenServer and use pid as entry param for API methods:
  {:ok, pid} = Exfacebook.start_link
  • get_object - get user or page related attributes, in case if you decide to use specific params for Facebook API like fields
  {:ok, %{"id" => id, "picture" => picture}} = Exfacebook.get_object(
     pid, :me, %{access_token: "access-token", fields: "id, picture"})
  • get_connections - get collection related items and attributes(feed or home or friends):
    {:ok, %{"data" => collection}} = response = Exfacebook.get_connections(
       pid, :feed, %{fields: "id, name", access_token: "access-token"})
  • next_page/prev_page - take next or prev collections using response from get_connections:
    response = Exfacebook.get_connections(pid, :feed,
       %{fields: "id, name", access_token: "access-token"})
    response2 = Exfacebook.next_page(pid, response)
    response3 = Exfacebook.next_page(pid, response2)
    response4 = Exfacebook.prev_page(pid, response3)
  • put_connections - update actions in facebook, example creates the new message in feed:
    Exfacebook.put_connections(:me, :feed,
       %{access_token: "access-token"}, %{message: "hello"})

Summary

Functions

batch(callback)
batch(params, callback)

Passing prepared params for batch processing using Facebook API.

Params are coming like normal requests encoded to JSON and then Facebook emulate requests on their side:

get_connections(pid, id, name, params)
get_connections(api, pid, id, name, params)
get_object(pid, id, params)
get_object(api, pid, id, params)
list_subscriptions(pid, params)

Realtime updates using subscriptions API

Examples:

  • list_subscriptions - returns list of subscriptions
  params = %{fields: "id,name"}

  {:ok, %{
    "data" => [
      %{"active" => true,
        "callback_url" => "https://example.com/client/subscriptions",
        "fields" => ["feed", "friends", "music"],
        "object" => "user"}]
    }
  } = Api.list_subscriptions(params)
  • subscribe - subscribe to real time updates for object, fields should contains object to watch for updates(“feed, friends”).
  Exfacebook.subscribe(pid, "id-1",
    "friends, feed", "http://www.example.com/facebook/updates",
    "token-123")
  • unsubscribe - unsubscribe object from real time updates.
  Exfacebook.unsubscribe(pid, "id-1")
list_subscriptions(api, pid, params)
next_page(pid, response)
next_page(api, pid, response)
prev_page(pid, response)
prev_page(api, pid, response)
put_connections(pid, id, name, params, body)
put_connections(api, pid, id, name, params, body)
start_link(options \\ [])
subscribe(pid, object, fields, callback_url, verify_token)
subscribe(api, pid, object, fields, callback_url, verify_token)
unsubscribe(pid, object)
unsubscribe(api, pid, object)