2012-12-12 19 views
1

我需要更新一個長壽命的訪問令牌。我讀 Renew long lived access token server side話題,寫了代碼如下:得到一個新的短命用戶access_token

<?php 

$code = $_REQUEST["code"]; 

if(empty($code)) { 

    $dialog_url = "https://www.facebook.com/dialog/oauth?" 
    . "client_id=$app_id" 
    . "&redirect_uri=$my_url" 
    . "&scope=..." 
    ; 

    echo("<script> top.location.href='" . $dialog_url . "'</script>"); 
} 
else 
{ 
    $response = file_get_contents("https://graph.facebook.com/oauth/access_token?" 
    . "client_id=$app_id" 
    . "&redirect_uri=$my_url" 
    . "&client_secret=$app_secret" 
    . "&code=$code" 
    ); 

    $params = null; 
    parse_str($response, $params); 
    $access_token=$params['access_token']; 

    $response = file_get_contents("https://graph.facebook.com/oauth/access_token?" 
    . "client_id=$app_id" 
    . "&client_secret=$app_secret" 
    . "&redirect_uri=$my_url" 
    . "&grant_type=fb_exchange_token" 
    . "&fb_exchange_token=$access_token" 
    ); 
} 

?> 

第一次調用它獲得60天的訪問令牌的所有權利。我預計在下一次調用時它會獲得另一個(可能具有相同名稱)的60天令牌,並且我會在調試器https://developers.facebook.com/tools/debug中看到發佈時間和到期時間會發生變化,但時間不會改變。我的方案有什麼問題?

回答

1

你是否比較過令牌?如果在24小時內完成相同的呼叫,Facebook會將您現有的訪問令牌發回給您。另外,如果您還向用戶請求了頁面令牌,則令牌設置爲不過期。請在這裏查看我的答案:Facebook Page Access Tokens - Do these expire?瞭解關於此主題的更多信息。

確保每次都獲得新令牌的一種方法是,如果通過對/ PROFILE_ID /權限執行http DELETE調用,然後請求新令牌來撤消訪問權限。唯一不好的是它需要你再次讓用戶通過oAuth對話框。

相關問題