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

时间:2013-07-09 06:49:39

标签: facebook-graph-api oauth passwords

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

我几周前创建了一个Facebook-App。在这段时间里它完美无缺。我的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 ???上更改我的密码

有没有人提示我正确的方向来解决这个问题?我非常感谢任何帮助。

致以最诚挚的问候,

AceLine

1 个答案:

答案 0 :(得分:0)

实际上你的流程并没有错。当令牌过期时,它实际上会抛出该错误。

我们之前遇到过这种错误,我们所做的是我们定期检查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();