会话已失效,因为用户已更改密码 -> 未更改密码

Posted

技术标签:

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

亲爱的 ***ian! 亲爱的 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 怎么样? 【参考方案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();

【讨论】:

以上是关于会话已失效,因为用户已更改密码 -> 未更改密码的主要内容,如果未能解决你的问题,请参考以下文章

Oracle报错:ORA-28001:口令已失效

尽管属性已更改,应用程序不会立即更新视图

如何以编程方式确定 iPhone 的密码是不是已更改或删除?

win10启动,显示“你的密码已过期,必须更改”,导致无法登陆,求解。

是否可以使用 Drush 更改用户的 Drupal 密码?

git 撤销更改