12/08/2018, 13:41

Tìm hiểu gem Koala

`- # Tìm hiểu gem Koala Koala là một thư viện facebook cho Ruby dùng để hỗ trợ Graph API, REST API, update thời gian thực, kiểm tra người dùng và xác thực OAuth. Gem Koala được viết ra với 4 mục đích chính như sau: Nhẹ: Koala nhẹ và đơn giản hơn thư viện riêng của facebook, cung cấp các bộ ...

`- # Tìm hiểu gem Koala

Koala là một thư viện facebook cho Ruby dùng để hỗ trợ Graph API, REST API, update thời gian thực, kiểm tra người dùng và xác thực OAuth. Gem Koala được viết ra với 4 mục đích chính như sau:

  • Nhẹ: Koala nhẹ và đơn giản hơn thư viện riêng của facebook, cung cấp các bộ truy vấn API và trả về JSON.
  • Nhanh hơn
  • Linh hoạt: hỗ trợ hầu hết các phiên bản như JRuby, Rubinius, REE...
  • đưa ra các phiên bản thử nghiệm

cài đặt

Thêm vào Gemfile

gem "koala", "~> 2.2"

bundle

Cách khác

chạy lệnh sau:

gem install koala

Graph API

Để sử dụng Graph API bạn cần có một token. Bạn có thể lấy token bằng cách vào trang Graph API Explore sau đó chọn tên ứng dụng và cuối cùng là click vào get Access Token

require 'koala'
@graph = Koala::Facebook::API.new(oauth_access_token)
profile = @graph.get_object("me")
friends = @graph.get_connections("me", "friends")
@graph.put_connections("me", "feed", message: "I am writing on my wall!")

# Three-part queries are easy too!
@graph.get_connections("me", "mutualfriends/#{friend_id}")

# You can use the Timeline API:
# (see https://developers.facebook.com/docs/beta/opengraph/tutorial/)
@graph.put_connections("me", "namespace:action", object: object_url)

# For extra security (recommended), you can provide an appsecret parameter,
# tying your access tokens to your app secret.
# (See https://developers.facebook.com/docs/reference/api/securing-graph-api/
# You'll need to turn on 'Require proof on all calls' in the advanced section
# of your app's settings when doing this.
@graph = Koala::Facebook::API.new(oauth_access_token, app_secret)

# Facebook is now versioning their API. # If you don't specify a version, Facebook
# will default to the oldest version your app is allowed to use. Note that apps
# created after f8 2014 *cannot* use the v1.0 API. See
# https://developers.facebook.com/docs/apps/versions for more information.
#
# You can specify version either globally:
Koala.config.api_version = "v2.0"
# or on a per-request basis
@graph.get_object("me", {}, api_version: "v2.0")

Kết quả trả về là dữ liệu dạng JSON từ máy chủ của Facebook (ví dụ như hash)

Khi lấy dữ liệu trả về một mảng kết quả (ví dụ khi gọi API#get_connections hoặc API#search) thì đối tượng GraphCollection được trả lại.

# Returns the feed items for the currently logged-in user as a GraphCollection
feed = @graph.get_connections("me", "feed")
feed.each {|f| do_something_with_item(f) } # it's a subclass of Array
next_feed = feed.next_page

# You can also get an array describing the URL for the next page: [path, arguments]
# This is useful for storing page state across multiple browser requests
next_page_params = feed.next_page_params
page = @graph.get_page(next_page_params)

Bạn cũng có thể gọi hàng loạt Facebook API cùng một lúc:

# Returns an array of results as if they were called non-batch
@graph.batch do |batch_api|
  batch_api.get_object('me')
  batch_api.put_wall_post('Making a post in a batch.')
end

REST API

Trường hợp các Graph API và REST API cũ trùng lên nhau, bạn nên chọn Graph API. Koala hỗ trợ các REST API bằng cách sử dụng giao diện rất giống nhau.

@rest = Koala::Facebook::API.new(oauth_access_token)

@rest.fql_query(my_fql_query) # convenience method
@rest.fql_multiquery(fql_query_hash) # convenience method
@rest.rest_call("stream.publish", arguments_hash) # generic version

Bạn có thể sử dụng Graph API trên cùng một đối tượng.

@api = Koala::Facebook::API.new(oauth_access_token)
fql = @api.fql_query(my_fql_query)
@api.put_wall_post(process_result(fql)

Cấu hình

# config/initializers/koala.rb
require 'koala'

Koala.configure do |config|
  config.graph_server = 'my-graph-mock.mysite.com'
  # other common options are `rest_server` and `dialog_host`
  # see lib/koala/http_service.rb
end

** còn rất nhiều chức năng nữa bạn có thể tham khảo thêm tại Koala

0