8

来自@avs099 的编辑:我在这篇文章上开始赏金,因为我有完全相同的问题。我在这里总结一下问题,把帖子本身不做任何改动留在底部以供参考。


我们所拥有的: Facebook 页面访问令牌,如下所述获得:作为页面进行身份验证,并且使用新的fb_exchange_token请求将其有效期延长至 60 天。

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

(OAuthException) 使访问令牌失效时出错:由于用户更改了密码,会话已失效。

或者

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

Facebook 的例外——但我当然没有更改密码或取消对应用程序的授权。

附加信息:不确定这是否重要,但:

  1. 有时我在从 Facebook 请求令牌几天后开始使用令牌
  2. 令牌是从服务器请求的(由 C# 后端),该服务器位于与将照片发布到粉丝页面的桌面应用程序不同的地理区域。
  3. 有时会发生几个不同的桌面应用程序从不同的 PC 发布照片(我猜是不同的 IP)

任何人都知道发生了什么以及如何解决这个问题?

谢谢你。


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

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

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

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

或者

OAuthException:使访问令牌无效时出错:由于用户更改了密码,会话已失效。

但这不是依赖于外部用户的访问令牌,只依赖于内部人员(我和另一个人现在)。我们不会更改密码或做任何事情。我什至在获得令牌后通过注销 Facebook 对其进行了测试,并且效果很好。过了一会儿,它们无缘无故过期,我无法确定。当我得到令牌时,我可以在调试工具上检查它们,它们应该持续 60 天(根据文档),尽管该工具说它们永不过期。

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

有人知道发生了什么吗?

4

6 回答 6

2

正如 Mikhail 指出的那样,如果您收到错误报告,表明令牌无效,因为用户更改了密码。当您已经有一个有效的令牌时,您很可能正在代码中隐藏的某个地方请求一个新令牌。

于 2012-06-27T14:37:13.763 回答
1

可能与这个错误有关?https://developers.facebook.com/bugs/241373692605971?browse=search_4fb4832bcaf7b1549293950

于 2012-05-17T04:50:02.220 回答
0

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

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

于 2012-05-19T14:15:15.423 回答
0

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

于 2012-07-11T11:33:38.093 回答
0

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

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

于 2012-05-20T20:34:37.030 回答
0

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

要做到这一点:

  1. 面临问题的 facebook 用户转到其 facebook 页面
  2. 他/她从他/她的应用程序列表中删除您的应用程序。
  3. 重试通过 android 上的 facebook sdk 登录。
于 2013-03-08T12:45:58.557 回答