$facebook = new Facebook(array(
'appId' =>Yii::app()->params['FBappId'],
'secret' =>Yii::app()->params['secret'] ,
));
// Get User ID
$user = $facebook->getUser();
if ($user) {
try {
// Proceed knowing you have a logged in user who's authenticated.
echo $accessToken=$facebook->getAccessToken();
echo '<br/>';
$user_profile = $facebook->api('/me');
print_r($user_profile); echo "normal sdk"; exit;
} catch (FacebookApiException $e) {
echo $e; exit;
$user = null;
}
}
echo "normal sdk end";exit;
我尝试使用php sdk 3.3.2和用户登录facebook,它打印令牌和用户信息直到令牌过期。大约一个小时后,我通过令牌调试器会话检查到期,它给出一次异常然后空白响应。但在另一个选项卡中正在访问facebook。 我的问题是
1.当令牌过期时,是否有任何inbuild方法可以再次获得有效令牌?
2.为什么空白回复?每次都应该抛出异常
答案 0 :(得分:1)
您可以使用Facebook's Debug Tool检查访问令牌的有效性。
普通访问令牌在2小时后到期,扩展令牌持续2个月。
如果您需要扩展令牌,请执行以下操作:How to extend access token validity since offline_access deprecation
好吧,如果你因为$ facebook-&gt; api('/ me')而空白;这只是意味着用户还没有授权应用程序。试试这样的事情 -
$user_id = $facebook->getUser();
echo $uid;
if($user_id){
try {
$user_profile = $facebook->api('/me');
} catch (FacebookApiException $e) {
error_log($e);
$user_id = null;
}
}else{
$login_url = $facebook->getLoginUrl();
echo("<br>login url=".$login_url);
};