【发布时间】:2012-05-07 18:14:54
【问题描述】:
来自@avs099 的编辑:我开始在这篇文章中提供赏金,因为我遇到了完全相同的问题。我把问题总结在这里,把帖子本身不做任何改动留在底部以供参考。
我们所拥有的: Facebook 页面访问令牌,按此处所述获得:Authenticating as a Page,并且通过新的fb_exchange_token 请求将其有效期延长至 60 天。
问题是什么:这个令牌工作了一段时间 - 有时我可以在几天内将数百张照片发布到我的粉丝页面;有时它实际上是几张照片 - 然后我开始得到任何一张
(OAuthException) 使访问令牌无效时出错:会话已被 由于用户更改了密码而失效。
或
(OAuthException) 使访问令牌无效的错误:会话没有 匹配当前存储的会话。这可能是因为用户更改了 自会话创建或 Facebook 拥有的密码 出于安全原因更改了会话。
来自 Facebook 的例外情况 - 但我当然没有更改密码或取消对应用的授权。
其他信息:不确定是否重要,但:
- 有时我从 Facebook 请求令牌几天后就开始使用它
- (由 C# 后端)从服务器请求令牌 它位于与桌面不同的地理区域 将照片发布到粉丝页面的应用。
- 有时有几个不同的桌面应用程序会发布来自不同 PC 的照片(即我猜是不同的 IP)
任何人都知道发生了什么以及如何解决这个问题?
谢谢。
我有一个 facebook 应用程序,它有两个用途:
1) 允许用户通过 facebook 连接到我的网站 2) 允许我的网站发布到我的网站 facebook 粉丝页面墙
我关心的是第二种用法。我曾经能够在粉丝页面上设置应用程序的权限,只允许发布(通过 php sdk),而不用担心访问令牌。现在我创建了一些新的粉丝页面,并且该功能似乎已被删除。好的,所以我完成了为用户(总是我或我的 facebook 粉丝页面的其他管理员)获取访问令牌(成功)的整个过程,并使用该令牌来获取我管理的粉丝页面的访问令牌(我有manage_pages 权限以及我要发布到的页面的其他管理员)。但是,由于引擎开始将内容发布到我的粉丝页面,令牌已过期并出现以下两条错误消息之一:
使访问令牌无效时出错:会话与当前存储的会话不匹配。这可能是因为用户在创建会话后更改了密码,或者 Facebook 出于安全原因更改了会话。
或
OAuthException: Error invalidating access token: 由于用户更改了密码,会话已失效。
但这不是依赖于外部用户的访问令牌,只依赖于内部人员(我和另一个人现在)。我们不会更改密码或做任何事情。我什至在获得令牌后通过注销 Facebook 对其进行了测试,并且效果很好。过了一会儿,它们无缘无故过期,我无法确定。当我得到令牌时,我可以在调试工具上检查它们,它们应该持续 60 天(根据文档),尽管该工具说它们永不过期。
我已经设置了系统,因此当它无法发布到页面时,我会收到一封电子邮件,其中包含指向我的站点的链接以更新令牌。
有人知道发生了什么吗?
【问题讨论】:
-
是否有任何用户被 Facebook 安全锁定?这以与更改密码相同的方式循环令牌
-
嗯...“安全锁定”到底是什么?如果我输入错误的密码 - 会这样吗?我不记得有任何不寻常的活动——所以很可能答案是“不”。如果我给你过期的令牌 - 你能追踪它的历史并找出它被取消的原因吗?
-
我一直无法完全解决这个问题,但它似乎至少已经平息了。如果令牌过期并带有指向生成新令牌并将它们保存在数据库中的页面的链接,我将服务器设置为向我发送电子邮件。不过,这些令牌至少在一周内还没有神秘地过期。
-
@Igy - 很抱歉打扰您,但有没有办法让您查看访问令牌并跟踪其历史记录并让我知道它为什么已过期?谢谢!
-
我在我的一个应用程序中遇到了同样的问题,并且一开始找不到解决方法。最大的问题是 Facebook 的错误消息,它多次没有解释实际原因。例如,当实际错误是令牌已过期时,我收到“OAuthException:使访问令牌无效:会话已无效,因为用户更改了密码”错误。我对此的解决方案是首先通过尝试 graphQuery 'graph.facebook.com/me?access_token=token...' 来检查令牌。如果失败,我使用 fb_exchange_token 查询扩展令牌。
标签: facebook facebook-graph-api