2013-10-14 43 views
6

按照documentation端點看起來像你將如何使用facebook php sdk執行`debug_token`調用?

GET /debug_token? 
    input_token={input-token}& 
    access_token={access-token} 

其中

input_token:訪問令牌你想獲得有關
access_token:您的應用程序訪問令牌或從一個有效的用戶訪問令牌應用程序的開發人員

假設我沒有「有效的用戶訪問權限en應用程序的開發人員「 - 僅僅因爲我不想每隔2個月刷新一次,並始終記住 - 我如何使用」應用程序訪問令牌「執行此操作?

getApplicationAccessToken()方法受到保護,因此如果不將其重寫爲公開,則無法訪問它。

任何優雅的解決方案,我錯過了?

PS:一個調用示例,將失敗,「你必須提供一個應用程序訪問令牌或用戶訪問令牌是應用的所有者或開發者」的錯誤由於缺乏訪問令牌:

$tokenDebug = $fb->api('debug_token', array(
    'input_token' => $token, 
)); 

PPS:「有趣」的事情是,上面的錯誤不會出現在每個$token,但對於某些人來說,我看不到任何明顯的失敗和成功的標記之間的區別。

PPPS:$token用戶訪問令牌

PPPPS:創建爲FB PHP SDK https://developers.facebook.com/bugs/637897982899835

PPPPPS功能要求:也許它可能是更好的,而不是創建一個拉請求,但它是1 :上午30點,我太累了

+0

爲什麼要在第一個位置調試_application_訪問令牌......? – CBroe

+0

@CBroe:我想調試用戶訪問令牌'$ token' – zerkms

+1

'app_id | app_secret'(兩個值與中間的管道符號連接)總是作爲應用程序訪問令牌運行。 – CBroe

回答

10

好的,所以如果你需要一個應用程序訪問令牌,app_id|app_secret(兩個值與中間的管道符號連接)總是有效。

方法getApplicationAccessToken似乎已在PHP SDK中受保護,最高爲3.2.2 - 而getAppIdgetAppSecret已在該版本中公開;所以這些可以替代硬編碼和祕密。

+1

並不總是。當應用程序是桌面/本機時,它不起作用。在這種情況下,input_token和access_token是相同的。 – OCTAGRAM

5

PHP SDK的getOAuth2Client()客戶端方法返回\Facebook\Authentication\OAuth2Client實例。

這有debugToken($accessToken)方法,該方法返回一個包含有關訪問令牌數據的\Facebook\Authentication\AccessTokenMetadata實例。

$appid = '123456789'; 
$appsecret = 'foobar'; 

$api = new Facebook(['app_id' => $appid, 'app_secret' => $appsecret]); 

$oauth = $api->getOAuth2Client(); 
$meta = $oauth->debugToken($accessToken); 
$meta->validateAppId($appid); // Will throw a FacebookSDKException if invalid 

$meta->getIsValid(); // boolean 
$meta->getExpiresAt(); // \DateTime|null 
+0

現在確實:-) – zerkms

相關問題