会话已失效,因为用户已更改密码 -> 未更改密码
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();
【讨论】:
以上是关于会话已失效,因为用户已更改密码 -> 未更改密码的主要内容,如果未能解决你的问题,请参考以下文章
如何以编程方式确定 iPhone 的密码是不是已更改或删除?