访问令牌有效,但我们得到 OAuthException:活动访问令牌错误
Posted
技术标签:
【中文标题】访问令牌有效,但我们得到 OAuthException:活动访问令牌错误【英文标题】:The Access Token is Valid but We get OAuthException: An active access token error 【发布时间】:2012-11-26 11:07:11 【问题描述】:我们已经开发了大约 2 个月的应用程序,一切进展顺利。 我们在登录权限中使用 php SDK 和离线模式 但是自从几天前在 Facebook api 的最近更改和删除离线模式之后,我们开始面临“未捕获的 OAuthException:必须使用活动访问令牌来查询有关当前用户的信息”的问题。
主要问题是它确实发生在我们的应用程序工作一段时间后(大约 10 分钟),但同时我们通过 this link 检查令牌的有效性 我们看到令牌仍然有效,另一方面 cookie 仍然存在并且它不会过期,但我们收到此错误: “未捕获的 OAuthException:必须使用活动访问令牌来查询有关当前用户的信息”
I've already visited this link 我下载了最新版本,但没有帮助任何人都可以帮助我们,请问哪里可能出错?
感谢回复,我觉得和yacon一样 在我们正在处理的那一刻访问 facebook->api(/me) 时似乎有一个错误 应用程序的某些部分使用 javascript,使用 javascript sdk 真的很头疼 和 PhP sdk 并肩作战
【问题讨论】:
顺便提一下,当我们在浏览器中从我们的网站中删除 cookie 时,我们可以再次成功登录,但过了一会儿,同样的事情发生了 如果您使用 PHP sdk,那么这将使用会话来存储令牌 - 您的会话到期时间是多少? 我也遇到了同样的问题。所以,关注这个帖子并对提出的解决方案非常感兴趣 也有同样的问题。 【参考方案1】:您可以解决这个问题,只需在 getLoginUrl 之后将 accesstoken 存储到会话变量中
$facebook->getLoginUrl(...)
然后每当你初始化 facebook
$facebook = 新的 Facebook(数组( 'appId' => Yii::app()->params['facebook_appId'], 'secret' => Yii::app()->params['facebook_appSecret'], ));从会话中获取访问令牌并使用 setAccessToken 设置它
$facebook->setAccessToken(Yii::app()->session['access_token']);
【讨论】:
【参考方案2】:我是这样处理这种情况的 1.我获得了 1 小时有效期的访问令牌 2.将令牌有效期延长至60天 3.将该令牌保存到会话并将其用于所有项目查询。
try
$facebook_uid = $facebook->getUser();
$facebook->setExtendedAccessToken();
$accessToken = $facebook->getAccessToken();
$fbuser = $facebook->api('/me');
$session['api_me'] = $fbuser;
$session['tokenValue'] = $accessToken;
catch (Exception $e)
facebook_uid =null;
【讨论】:
$fbuser = $facebook->api('/me');它包含用户信息。 好的,谢谢!我正在尝试您的代码...我希望它有助于 PHP SDK 的新更改 还有一点,$session 不应该是 $_SESSION['api_me'] 或 $_SESSION['tokenValue'] ? Hemc 在进一步的查询中使用这个 accessToken 是什么意思假设我需要访问 facebook->api(/me) 然后在这一行发生异常所以如何使用在会话中保存的 accessToken避免这个例外?【参考方案3】:我认为 api 中存在错误。当我使用 $facebook->api('/'.$facebook_uid) 而不是 ->api('/me') 时,它可以工作。
【讨论】:
我认为和 yacon 一样,在我们使用 javascript 处理应用程序的某些部分时,访问 facebook->api(/me) 时似乎存在错误,这对于使用 javascript sdk 来说真的很头疼和 PhP sdk 并排以上是关于访问令牌有效,但我们得到 OAuthException:活动访问令牌错误的主要内容,如果未能解决你的问题,请参考以下文章
尽管我使用了有效的令牌,但 Laravel Passport 得到未经身份验证的响应