2011-08-29 42 views
0

我用户邀请朋友使用请求对话我的应用程序一起发送的“数据”的信息。我怎样才能得到这是与Facebook请求

我一起额外的数据发送如下:

FB.ui({ 
      method: 'apprequests', 
      message: "Come to this great site, 
      data: '{"page_id": "<%[email protected]%>"}' 
    },... 

当该请求被接受的人邀请他们被带到我的网站。
我想读书,我在“数据”发送沿着信息。

我明白我需要在请求object_ids 我有那些。

我只是不知道如何在Rails和Java脚本对象内部的信息获取。

我看到使用PHP这个例子:

$request_content = json_decode(file_get_contents("https://graph.facebook.com/$request_id?$app_token"), TRUE); 
extract(json_decode($request_content['data'], TRUE)); 

我怎么能做到这一点使用Rails,Ruby的从我的控制器内?

我使用OmniAuth BTW

回答

0

我是一个大型NOOB但是这对我的作品,所以我想我会分享:

The user clicks 'allow' in facebook: 



1. User sent to authorize action in a controller to store the request ids 
2. They are sent to a page that has a javascript redirect to the sessions controller action 

在会话控制器:

require "net/https" 
require "net/http" 
require "uri" 


request_id = session[:request_ids].last 
auth = request.env["omniauth.auth"] 
access_token = "access_token=#{auth['credentials']['token']}" 
request_url = URI.parse("https://graph.facebook.com/#{request_id}?#{URI.escape(access_token)}") 
http = Net::HTTP.new(request_url.host, request_url.port) 
     http.use_ssl = true 
     http.verify_mode = OpenSSL::SSL::VERIFY_PEER 
     request_body = http.request(Net::HTTP::Get.new(request_url.request_uri)) 
request_content = ActiveSupport::JSON.decode(request_body.body) 

的request_content将包含所有发送的信息原始的应用程序请求。

所以,你可以访问的对象,就像任何哈希值。

request_content["data"] # to get the data sent along. 

再次带上一粒盐。它有效,但它可能不是最好的解决方案。

0

我强烈的企图实现在Javascript中,因为这将允许用户找到您的应用程序的访问令牌在他们的浏览器,这是为您的应用大量的安全问题阻碍你。服务器端,你可以用任何基本的语言来完成它(并且可以通过从用户浏览器对你的支持进行Javascript调用来触发),PHP示例应该适用于任何能够解码JSON的语言。

0

在rails中,你需要使用像Facebook考试,facebooker 2等facebook api包装,你可以很容易地添加它。 Omniauth只提供身份验证,仅此而已。 您可以保存从omniauth Facebook的身份验证令牌,并用它来要求用户与考拉的额外信息。