2010-06-08 75 views
0

我试图在我的ruby sinatra应用中使用Facebook实现单一登录。到目前为止,我一直在关注这个教程:从Ruby中的Facebook Open Graph响应获取访问令牌

http://jaywiggins.com/2010/05/facebook-oauth-with-sinatra/

我能够发送请求的用户连接到我的应用程序,但我无法真正“得到”访问令牌。用户可以毫无困难地连接,我收到了一个“code”参数的响应,我应该使用它来交换一个Access Token - 但是在这里我卡住了。

所以我提交URL以下参数:

https://graph.facebook.com/oauth/access_token/了{client_id} & {client_secret} & {代码} & {REDIRECT_URI}

在上面的花括号内的文字显然被取代值。

response = open(url) 

这似乎并没有返回使用在任何一个访问令牌的方式(它有一个@base_uri这是我在上面提交,网址:

我这个使用下面的代码提交其他几个参数,尽管没有什么用处)。但是,如果我提交了我提交的网址并将其粘贴到浏览器中,我会收到一个访问令牌。

任何人都可以告诉我如何从Facebook获取请求并提取访问令牌吗?

谢谢。

回答

0

假设你使用open-uri,你应该得到一个带有一些扩展名的文件句柄。

这意味着您可以像读取任何文件句柄一样读取响应的主体。

body = response.read 

,那么你可能要解析JSON和拉出访问令牌:

require 'json' 
JSON.parse(body)['access_token']