【问题标题】:The session has been invalidated because the user has changed the password -> no Password was changed会话已失效,因为用户已更改密码 -> 未更改密码
【发布时间】:2013-07-06 16:17:30
【问题描述】:

亲爱的 Stackoverflowian! 亲爱的 Facebook 开发者!

几周前我创建了一个 Facebook 应用程序。在这段时间里,它工作得很好。我的 PHP 脚本检查 access_token 是否在到期前至少 10 天(它会自动设置为之前的长到期日期),如果是(如果 >= 到期日期 - 10),它会尝试为同一用户获取新的 access_token (这是我,我自己和我)。

问题是从昨天开始它就给我一个错误:

Fatal error: Uncaught OAuthException: Error validating access token: The session has been invalidated because the user has changed the password.

现在我的问题是:它怎么会抛出这个错误,因为我从未在 FB 上更改过密码???

有人对我解决此问题的正确方向有任何提示吗?非常感谢您的帮助。

最好的问候,

王牌

【问题讨论】:

  • 一次不多!!! ;o)
  • 我也有同样的问题.. oO 怎么样?

标签: facebook-graph-api oauth passwords


【解决方案1】:

实际上,您的流程没有任何问题。当令牌过期时,它实际上会抛出该错误。

我们以前遇到过这种错误,我们所做的是定期检查accessToken 是否仍然有效,如果不是,那么我们生成并保存一个新的。但是,当我们设置将使用的accessToken 时,我们还会在将令牌保存到本地数据库之前延长令牌的寿命。见extendedAccessToken

这是一个示例更新(这只是一个粗略的代码):

// Set the access token and extend it
$facebookClient = new FacebookClient();
$facebookClient->setAccessToken($accessToken);
$facebookClient->setExtendedAccessToken();

// Query your user that will have the updated access token and update it.
$user = User::get($userId);
$user->accessToken = $facebookClient->getAccessToken();
$user->update();

【讨论】:

    猜你喜欢
    • 2012-01-19
    • 1970-01-01
    • 2015-10-23
    • 2019-10-15
    • 1970-01-01
    • 1970-01-01
    • 2011-02-10
    • 1970-01-01
    • 2016-10-02
    相关资源
    最近更新 更多