【发布时间】:2014-12-09 17:23:38
【问题描述】:
我正在为我的网站进行 Facebook 查找集成,并且希望能够获得用户的访问令牌,以便在登录之后进行进一步的交互功能。我已经使用 javascript SDK 使登录过程正常工作,我可以通过查询 /me 边缘获取用户信息。根据我的阅读,我应该能够通过查询 oauth/access_token 边缘 api 让我的服务器获取用户访问令牌。
我的查询结构如下
HTTParty.get(URI.escape("https://graph.facebook.com/oauth/access_token?client_id=1398254717088095&redirect_uri=http://portal.ggwifi.net/test_portal/&client_secret=xxxxxxxxxxxxxxxxxxxxxxxxxxx&code=5TPMo3WelM6aDm7zbvVBkZTlV_5ydQaHPP26Ytfv7Hg.eyJhbGdvcml0aG0iOiJITUFDLVNIQTI1NiIsImNvZGUiOiJBUUFZUVVfS3laTk9hcjFPN0JtUTdVUXhudmpRQjF5SjEwN3J1dXRBVmF4WEZ0V3lzY3g0MmxFUXlwZ2JvYzFsbmpGLUxXZDYwanRMNUtPeU5xMVlGUGRjSzJuQ3dTQ0ctOXEwQmV5eUFTM2dnck5uN1NiRWVZY2Uzck03YmpOYU5vY1R0NVJDSWlrMUZybWN5aDRMVEp6R3Q3dmN1M18zY0ZSbklyc1ZNcGN2cEtxajJ1QjRzUFA1aE52cDV6VXBIaktnd3Y5QU5HZHd5b2ZFYjViRHk4eHEzYVFTQVg0QWNwdUJoemFUWGpINkZ6WDVra29GbTh2Zzg5M1oxVExGRWJsektzSTJUdW9fX1ZlLXN4Si1KUDYyeWg0blhQRjc0LUJRelJBenhsbHNIUm05VUhKemNQbW8wYk04MDB3dXd6dDJsb210YkRvenhUQXFCdHk1T1NiYyIsImlzc3VlZF9hdCI6MTQxMzMxMzQzNSwidXNlcl9pZCI6IjIyMzAxNDc1In0"))
其中 code 是存储在 cookies[:fbsr_1398254717088095] 中的值。
我已经尝试过了,但每次尝试都会失败并出现错误:
{
"error": {
"message": "Invalid verification code format.",
"type": "OAuthException",
"code": 100
}
}
我在某处读到需要在“.”处拆分代码,但我也尝试过(使用句号之前的部分和之后的部分),但它没有用要么。
我是否需要以其他方式操作存储在 cookie 中的代码才能获取令牌?我在这里错过了什么?
PS - 我也尝试使用图形 api 资源管理器获取令牌,粘贴我的 cookie 值,但得到相同的错误。
【问题讨论】:
-
当然不行。获取访问令牌的方法是向用户显示登录对话框。用户可以选择是否使用您的应用程序。使用 cookie 中的值将不起作用
-
用户已接受登录对话框并授予我的应用权限。但是如何使用用户的访问令牌进行服务器到服务器的 API 调用?我的研究表明 fbsr cookie 是一个签名请求,应该可以使用我的应用程序的密钥对其进行解码以获得访问令牌,但我不知道该怎么做。
-
fbsr cookie 是在 facebook.com 上使用的东西,您不应该使用任何东西。您只需存储用户接受登录对话框并授予您的应用权限时获得的访问令牌
标签: ruby-on-rails facebook facebook-graph-api cookies