我的用户使用请求对话邀请朋友加入我的应用程序。
我按如下方式发送额外数据:
FB.ui({
method: 'apprequests',
message: "Come to this great site,
data: '{"page_id": "<%=@page.id%>"}'
},...
当邀请人接受请求时,他们将被带到我的网站 我想阅读我在“数据”中发送的信息。
我理解我需要获取请求object_ids 我有那些。
我只是不知道如何获取Rails和Javascript中对象内部的信息。
我使用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 :(得分:0)
我强烈建议您不要尝试在Javascript中实现它,因为它允许用户在浏览器中找到您的App访问令牌,这对您的应用来说是一个巨大的安全问题。
服务器端,您可以使用任何基本语言(并且可以通过对用户浏览器支持的Javascript调用来触发),PHP示例应该适用于能够解码JSON的任何语言。
答案 1 :(得分:0)
在rails中你需要像Koala,facebooker等使用facebook api包装器,你可以轻松添加它。 Omniauth仅提供身份验证,仅此而已。 您可以从omniauth facebook身份验证中保存令牌,并使用它来向用户请求有关考拉的额外信息。
答案 2 :(得分: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.
再次拿出一粒盐。它有效但可能不是最好的解决方案。