7

亲爱的 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 上更改过密码???

有人对我解决这个问题的正确方向有任何暗示吗?我会非常感谢任何帮助。

此致,

王牌

4

1 回答 1

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();
于 2014-08-09T09:39:02.760 回答