0

我正在尝试在我的 ruby​​ sinatra 应用程序中使用 facebook 实现单点登录。到目前为止,我一直在关注本教程:

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

我能够向用户发送连接到我的应用程序的请求,但我在实际“获取”访问令牌时遇到了麻烦。用户可以毫无问题地连接,我收到带有“代码”参数的响应,我应该用它来交换访问令牌 - 但它在这里我卡住了。

所以我提交了一个带有以下参数的网址:

https://graph.facebook.com/oauth/access_token/ {client_id}&{client_secret}&{code}&{redirect_uri}

上面大括号中的单词显然被值替换了。

我使用以下代码提交:

response = open(url)

这似乎没有以访问令牌的方式返回任何有用的东西(它有一个 @base_uri ,这是我在上面提交的 url 和一些其他参数,虽然看起来没什么用处)。但是,如果我将提交的 URL 粘贴到浏览器中,我会收到一个访问令牌。

谁能告诉我如何从 facebook 取回请求并提取访问令牌?

谢谢。

4

1 回答 1

0

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

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

body = response.read

然后您可能想要解析 json 并提取访问令牌:

require 'json'
JSON.parse(body)['access_token']
于 2010-06-12T21:54:16.493 回答