Facebook访问令牌因未知原因而到期

时间:2012-05-07 18:14:55

标签: facebook facebook-graph-api

来自@ avs099的编辑:我正在这篇文章上开始赏金,因为我有完全相同的问题。我在这里总结了这个问题,并在帖子底部留下了没有任何变化的参考文件。


我们拥有的内容:按照此处所述获取的Facebook页面访问令牌:Authenticating as a Page以及使用新fb_exchange_token请求将其延长至60天。

有什么问题:这个令牌可以工作一段时间 - 有时我可以在几天内将数百张照片发布到我的粉丝页面;有时它几乎没有照片 - 然后我开始得到

  

(OAuthException)使访问令牌失效的错误:会话已经完成   因用户更改了密码而失效。

  

(OAuthException)使访问令牌无效的错误:会话没有   匹配当前存储的会话。这可能是因为用户改变了   自会话创建或Facebook拥有以来的密码   出于安全原因改变了会话。

来自Facebook的例外 - 当然我没有更改密码或取消授权应用程序。

其他信息:不确定这是否重要,但是:

  1. 有时我在从Facebook提出请求后几天开始使用令牌
  2. 从服务器请求令牌(通过C#后端) 它位于与桌面不同的地理区域 将照片发布到粉丝专页的应用。
  3. 有时发生 几个不同的桌面应用程序发布来自不同PC的照片(我猜不同的IP)
  4. 任何人都知道发生了什么以及如何解决这个问题?

    谢谢。


    我有一个Facebook应用程序,有两个目的:

    1)允许用户通过Facebook连接我的网站  2)允许我的网站发布到我的网站Facebook粉丝页面墙

    我关心的是第二次使用。我曾经能够在粉丝页面上设置应用程序的权限,只允许发布(通过php sdk)而不用担心访问令牌。现在我已经创建了一些新的粉丝页面,并且该功能似乎已被删除。好吧,所以我经历了为用户(总是我或我的Facebook粉丝页面的另一个管理员)获取访问令牌(成功)的整个过程,并使用该令牌获取我管理的粉丝页面的访问令牌(我有manage_pages权限以及我要发布到的页面的其他管理员也是如此。但是,当引擎将内容发布到我的粉丝页面时,令牌已经过期了两条错误消息之一:

    使访问令牌无效时出错:会话与当前存储的会话不匹配。这可能是因为用户自创建会话以来已更改密码,或者Facebook出于安全原因更改了会话。

    OAuthException:使访问令牌失效时出错:会话已失效,因为用户已更改密码。

    但这不是一个依赖于外部用户的访问令牌,只有内部人员(我现在和另外一个人)。我们不会更改密码或做任何事情。我甚至在获得令牌后退出Facebook测试它,它工作正常。只是过了一会儿,他们无缘无故地过期了。当我拿到令牌时,我可以在调试工具上检查它们,它们应该持续60天(根据文档),尽管该工具说它们永不过期。

    我已经设置了系统,所以当它无法发布到页面时,我会收到一封电子邮件,其中包含指向我网站的链接以更新令牌。

    任何人都知道发生了什么事?

6 个答案:

答案 0 :(得分:2)

正如Mikhail指出的那样,如果您收到错误报告令牌无效,则会导致用户更改密码。可能的情况是,当您已经拥有有效的令牌时,您正在请求隐藏在代码中的新令牌。

答案 1 :(得分:1)

答案 2 :(得分:0)

我的应用程序中存在同样的问题 - 有时令牌过期。

其中一个原因是:有时我的应用程序要求新令牌,而旧令牌有效且FB返回错误或由于某种原因我无法保存新令牌。 旧令牌过期后 - 对用户应用只有一个令牌可能有效。

答案 3 :(得分:0)

您可以获取未经授权的令牌,以便请求新令牌(或任何您喜欢的令牌)。

我可以提供一个很好的解释,但你可以在这里阅读: https://developers.facebook.com/blog/post/2011/05/13/how-to--handle-expired-access-tokens/

答案 4 :(得分:0)

临时解决方案是要求用户从其配置文件中删除该应用程序,然后再次允许它。

答案 5 :(得分:0)

我遇到了同样的问题,并解决了“将应用重新安装到用户的Facebook应用程序”。如果没有问题的答案,它可能会帮助你。

要做到这一点:

  1. 正面临问题的Facebook用户访问其Facebook页面
  2. 他/她从他/她的应用程序列表中删除您的应用程序。
  3. 在Android上重试登录facebook sdk。