我在测试时遇到了这个问题。
在我的应用中,用户点击一个链接,让他们登录并为我的应用授予权限。
问题是,在我成功完成一次之后,我不能轻易再做一次。我对Facebook对象中的用户的检查返回有用户,但访问令牌无效。我收到以下错误:
Fatal error: Uncaught OAuthException: An active access token must be used to query information about the current user. thrown in /home/kleelof/public_html/projects/tutor_chapter/facebook_login/facebook/base_facebook.php on line 1028
以下是我的一些代码:
The variable $fb is set to the Facebook object before the following code is executed. .
$user = $fb->getUser();
if ($user)
{
// get coupon code
$coupon_code = file_get_contents(CODE_URL . "/facebookcoupon.php?email=$user_email");
// check that the user has given the app permission to post on their wall.
//try
//{
$permissions = $FB->api("/me/permissions");
if (array_key_exists('publish_stream', $permissions['data'][0]))
{
// build attachment
$attachment = array(
'name' => $site_name,
'link' => urlencode(BASE_URL . str_replace('%code%', $coupon_code, $claim_link)),
'picture' => $image_link,
'description' => str_replace('%code%', $coupon_code, $description),
'access_token' => $FB->getAccessToken()
);
$FB->api('/me/feed/', 'post', $attachment);
$exit_to .= "?ce=The coupon has been posted on your Facebook timeline";
}
else
{
$exit_to .= "?ce=Unable to post the coupon";
}
//}catch (Exception $e)
//{
/*$exit_to = $FB->getLoginUrl(
array(
'scope' => FB_LOGIN_SCOPE
)
);
}*/
}
else
{//echo("no user");
$exit_to = $FB->getLoginUrl(
array(
'scope' => FB_LOGIN_SCOPE
)
);
}
你可以看到我试图抓住我上面提到的错误并将它们发送回登录,但是它只是被一个循环转到FB并被返回。
有没有人在逻辑中看到一些不正确的东西?
有没有更好的方法来处理异常?也许我可以做些什么来取消$ user。
小心, 利