kansiho's memo

ruby, python, javascript. Rails, wordpress, OpenCV, heroku...

railsからfacebookにnotification APIで通知を送る

http://media02.hongkiat.com/quicktips/unfollow-post-comments-facebook.jpg

頻繁にユーザーが見るfacebookに通知を送る方法。

jp.techcrunch.com

https://graph.facebook.com/{recipient_userid}/notifications?access_token={application_access_token}&template={Your_Message}&href={URL_to_your_app_or_request}

にPOSTする。

2つのgem

でやる方法がある。 コードをテストするまえに、facebook developperで「プラットフォーム」に「fbキャンバス」を追加しておくこと。 じゃないと

FbGraph::Unauthorized (OAuthException :: (#200) Only web canvas apps can send app notifications):

というエラーが出てしまうので。

koaraを使う

require 'koala'
require 'net/http'
require "net/https"
...

fb_url = "#{fb_id}/notifications?access_token=#{app_access_token}&href=#{FB_CALLBACK_URL}&template=You have a new score! See your results now!"
uri = URI.encode("https://graph.facebook.com/#{fb_url}")
uri = URI.parse(uri)
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE

fb_req = Net::HTTP::Post.new(uri.request_uri)
fb_response = http.request(fb_req)

fb_graphを使う

uid = hogehoge # facebookのユーザーuid

fb_user = FbGraph::User.new(uid)
app = FbGraph::Application.new(APP_ID, :secret => APP_SECRET)
app.notify!(
      fb_user,
      :href => 'http://www.example.com', #通知をクリックした時のリンク先
      :template => "お知らせがあります") #通知として表示される文字

参考

Using NET::HTTP in Rails to send Facebook App Notifications (Example)

stpanisush.hatenablog.com

NOTE

  • ブラウザには出ても、facebook アプリだと通知がない気がする
  • POST “/” になるので、最初エラーが出る