来自@ avs099的编辑:我正在这篇文章上开始赏金,因为我有完全相同的问题。我在这里总结了这个问题,并在帖子底部留下了没有任何变化的参考文件。
我们拥有的内容:按照此处所述获取的Facebook页面访问令牌:Authenticating as a Page以及使用新fb_exchange_token请求将其延长至60天。
有什么问题:这个令牌可以工作一段时间 - 有时我可以在几天内将数百张照片发布到我的粉丝页面;有时它几乎没有照片 - 然后我开始得到
(OAuthException)使访问令牌失效的错误:会话已经完成 因用户更改了密码而失效。
或
(OAuthException)使访问令牌无效的错误:会话没有 匹配当前存储的会话。这可能是因为用户改变了 自会话创建或Facebook拥有以来的密码 出于安全原因改变了会话。
来自Facebook的例外 - 当然我没有更改密码或取消授权应用程序。
其他信息:不确定这是否重要,但是:
任何人都知道发生了什么以及如何解决这个问题?
谢谢。
我有一个Facebook应用程序,有两个目的:
1)允许用户通过Facebook连接我的网站 2)允许我的网站发布到我的网站Facebook粉丝页面墙
我关心的是第二次使用。我曾经能够在粉丝页面上设置应用程序的权限,只允许发布(通过php sdk)而不用担心访问令牌。现在我已经创建了一些新的粉丝页面,并且该功能似乎已被删除。好吧,所以我经历了为用户(总是我或我的Facebook粉丝页面的另一个管理员)获取访问令牌(成功)的整个过程,并使用该令牌获取我管理的粉丝页面的访问令牌(我有manage_pages权限以及我要发布到的页面的其他管理员也是如此。但是,当引擎将内容发布到我的粉丝页面时,令牌已经过期了两条错误消息之一:
使访问令牌无效时出错:会话与当前存储的会话不匹配。这可能是因为用户自创建会话以来已更改密码,或者Facebook出于安全原因更改了会话。
或
OAuthException:使访问令牌失效时出错:会话已失效,因为用户已更改密码。
但这不是一个依赖于外部用户的访问令牌,只有内部人员(我现在和另外一个人)。我们不会更改密码或做任何事情。我甚至在获得令牌后退出Facebook测试它,它工作正常。只是过了一会儿,他们无缘无故地过期了。当我拿到令牌时,我可以在调试工具上检查它们,它们应该持续60天(根据文档),尽管该工具说它们永不过期。
我已经设置了系统,所以当它无法发布到页面时,我会收到一封电子邮件,其中包含指向我网站的链接以更新令牌。
任何人都知道发生了什么事?
答案 0 :(得分:2)
正如Mikhail指出的那样,如果您收到错误报告令牌无效,则会导致用户更改密码。可能的情况是,当您已经拥有有效的令牌时,您正在请求隐藏在代码中的新令牌。
答案 1 :(得分:1)
可能与此错误相关? https://developers.facebook.com/bugs/241373692605971?browse=search_4fb4832bcaf7b1549293950
答案 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应用程序”。如果没有问题的答案,它可能会帮助你。
要做到这一点: