2016-03-03 71 views
0

我有兩個PHP文件用於創建登錄鏈接並接收訪問令牌(回調)。我的問題是,我無法接收或獲取訪問令牌的到期日期。Facebook PHP SDK v5 - AccessToken失效日期

這是我創建一個鏈接腳本:

<?php 
session_start(); 

define('FACEBOOK_SDK_V4_SRC_DIR', __DIR__ . '/facebook/');  
require_once __DIR__ . '/autoload.php'; 

$fb = new Facebook\Facebook(array('app_id' => 'XX', 'app_secret' => 'XX', 'default_graph_version' => 'v2.5')); 

$permissions = ['email', 'user_likes', 'user_birthday', 'manage_pages ', 'user_photos', 'publish_actions', 'publish_pages' ]; 

$helper = $fb -> getRedirectLoginHelper(); 
$loginUrl = $helper -> getLoginUrl('blabla/facebook-login-callback.php', $permissions); 

echo '<a href="' . $loginUrl . '">Log in with Facebook!</a>'; ?> 

這工作得很好,我的回調文件被調用。

<?php 

session_start(); 

define('FACEBOOK_SDK_V4_SRC_DIR', __DIR__ . '/facebook/'); 
require __DIR__ . '/autoload.php'; 

$fb = new Facebook\Facebook(['app_id' => 'XX', 'app_secret' => 'XX', 'default_graph_version' => 'v2.5']); 
$helper = $fb -> getRedirectLoginHelper(); 

try { 

    try { 
     $accessToken = $helper -> getAccessToken(); 

     $isexpired = $accessToken -> isExpired(); 
     $expiresAt = $accessToken -> getExpiresAt(); 

     echo "AccessToken: "; 
     echo $accessToken -> getValue(); 

     echo "<br/>ExpiresAt: "; 
     echo $expiresAt; 

     echo "<br/>IsExpired: "; 
     echo $isexpired; 

     die(); 

    } catch(Facebook\Exceptions\FacebookSDKException $e) { 
     // There was an error communicating with Graph 
     echo $e -> getMessage(); 
     exit ; 
    } 
} catch(Facebook\Exceptions\FacebookResponseException $e) { 
    // When Graph returns an error 
    echo 'Graph returned an error: ' . $e -> getMessage(); 
    exit ; 
} catch(Facebook\Exceptions\FacebookSDKException $e) { 
    // When validation fails or other local issues 
    echo 'Facebook SDK returned an error: ' . $e -> getMessage(); 
    exit ; 
} ?> 

但現在我的問題是,我不明白的截止日期還有「isExpired的價值,它只是空的。我唯一得到的就是訪問令牌作爲一個字符串(由'getValue()')。

有人可以幫我嗎?我認爲我的代碼應該是正確的?

+0

https://developers.facebook.com/tools/debug/ – CBroe

+0

謝謝,但我需要這個不是手動,但programmaticly .. – Maximus1809

+1

我的意思是,你應該比較令牌調試信息從調試工具到您在腳本中獲得的內容...... – CBroe

回答

0

代碼

{ 
    $accessToken =$helper->getAccessToken(); 

    $isexpired = $accessToken -> isExpired(); 
    $expiry_status=json_encode($isexpired); 

    $expiresAt = $accessToken -> getExpiresAt(); 
    $mydate=json_encode($expiresAt); 


    echo "AccessToken: "; 
    echo $accessToken -> getValue(); 

    echo "<br/>ExpiresAt: "; 
    echo $expiresAt->date; 

    echo "<br/>IsExpired: "; 
    echo $expiry_status; 

    die(); 
}