亲爱的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
答案 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();