无法通过Server Side OAuth Fow获得长期存在的Facebook Access令牌

时间:2012-07-11 16:17:28

标签: facebook oauth server-side facebook-access-token

我正在尝试获得一个长期存在的Facebook访问令牌,因此我的java servlet应用程序可以监控和检索我的用户的消息,而无需每隔一两个小时重新授权。

我正在使用服务器端oauth流程,并且所有内容都运行良好,但是无法获得超过一天的令牌。

第一个用户授权呼叫是:

https://www.facebook.com/dialog/oauth?client_id=-----&client_secret=-----&scope=read_mailbox,manage_pages&force=true&state=-----&redirect_uri=http%3A%2F%2F127.0.0.1%3A7101%2FeStarGlobal-eStarGlobal-context-root%2FOAuthCallback%3BJSESSIONID%3DvS9lP9JcF3B86zD99KVNGXzn2snKRl4V48lkJQD51cvXhpnLsT06%21-281618363%211342018780176%3FAuthSource%3D1%26AuthType%3D1%26EmployeeId%3D 97

用户授权我的应用,我收到回调网址上的代码,并呼叫我的访问令牌:

https://graph.facebook.com/oauth/access_token?client_id=-----&client_secret=-----&code=---code from above---&redirect_uri=http%3A%2F%2F127.0.0.1%3A7101%2FeStarGlobal-eStarGlobal-context-root%2FOAuthCallback%3BJSESSIONID%3DvS9lP9JcF3B86zD99KVNGXzn2snKRl4V48lkJQD51cvXhpnLsT06%21-281618363%211342018780176%3FAuthSource%3D1%26AuthType%3D1%26EmployeeId%3D97

我收到的有效令牌大约有6800秒,并尝试将其换成更长寿的令牌:

https://graph.facebook.com/oauth/access_token?client_id=-----&client_secret=-----&grant_type=fb_exchange_token&fb_exchange_token=---token from above---

我得到相同的令牌,有效期稍短。

我已启用:在我的Facebook App页面上删除offline_access权限。我没有增强安全对话框设置。

我将应用类型从Web更改为Native / Desktop,并将到期时间延长至约89000秒或一天。

任何想法都将不胜感激!

1 个答案:

答案 0 :(得分:1)

您说“我没有增强的安全对话框设置。”

如果这意味着你没有使用增强型对话框 - 你需要获得长寿命令牌。

如果这意味着您没有在增强版和旧版之间切换的选项,那么它可能不相关 - 您应该使用新版本