2014-02-15 78 views
0

如何確定訪問令牌是否已過期?最後一天,我能夠根據下面的代碼顯示信息,但是當我在第二天檢查它時,它不會重定向到Facebook。是否因訪問令牌?請幫助。謝謝如何處理在facebook api php sdk登錄時過期的訪問令牌?

// Get User ID 
    Facebook::$CURL_OPTS[CURLOPT_SSL_VERIFYPEER] = false; 
    Facebook::$CURL_OPTS[CURLOPT_SSL_VERIFYHOST] = 2; 
    $user = $facebook->getUser(); 
    $token = $facebook->getAcessToken(); 

if ($user) { 
try { 

    $user_profile = $facebook->api('/me'); 
    $friends = $facebook->api('/me/friends'); 
    } 
    catch (FacebookApiException $e) { 
     error_log($e); 
     $user = null; 
    } 
    } 


if ($user) { 
    $logoutUrl = $facebook->getLogoutUrl(array(
    'next'=>'http://localhost/fb/php/examples/logout.php' 
)); 
} else { 
    $loginUrl = $facebook->getLoginUrl(array('scope' => 'email,read_stream')); 
} 

<?php if ($user): ?> 

    <a href="<?php echo $logoutUrl; ?>">Logout</a> 
<?php else: ?> 
    <div> 

    <a href="<?php echo $loginUrl; ?>">Login with Facebook</a> 
    </div> 
<?php endif ?> 

?></pre> 

    <?php echo $user; ?> 
     <pre> 
    <?php 
     print_r($user_profile); 

    ?><pre> 
    <pre> 
    <?php 

    echo "=== LIST OF FRIENDS ==="; 

    echo "<br/>"; 
    $total_friends = count($friends['data']); 

    echo 'Total friends: '.$total_friends.'.<br />'; 
    $start = 0; 
    echo '<br />'; 
    while ($start < $total_friends) { 

    echo $friends['data'][$start]['name']; 
    ?> 
    <?php 
     <img src="https://graph.facebook.com/picture"/> <?php echo $value["data"][$start] ['name']; ?> 
    <?php 
    echo '<br />'; 
    $start++;} 
    ?></pre> 


<?php else: ?> 
    <strong><em>You are not Connected.</em></strong> 
<?php endif ?> 

</body> 
</html> 

回答

0

不知道它是如何工作昨天,而不是今天。由於按照時

$facebook->getUser(); 

不返回,這隻會使登錄鏈接和點擊它應該帶你到Facebook的登錄頁面登錄的任何用戶的代碼。

但是在你的代碼,你失去了一些東西,即REDIRECT_URI所以調用getLoginUrl之前,你應該通過帕拉姆爲

$params = array(
    'scope' => 'read_stream', 
    'redirect_uri' => 'page after login' // make sure this is full URL 
); 

$loginUrl = $facebook->getLoginUrl($params); 

現在在頂部,你有,你可以設置訪問如下令牌進一步呼叫

$user = $facebook->getUser(); 
$token = $facebook->getAcessToken(); 
$facebook->setAcessToken($token); 

同時確保捲曲是當n做任何API調用與SDK之前啓用

+0

'getLoginUrl'將自動使用當前地址o'redirect_uri'值明確給出。 – CBroe

+0

並且'getAcessToken' /'setAcessToken'東西也是不必要的 - 'getUser'會自動填充訪問令牌_if_它可以識別登錄用戶。 – CBroe

相關問題