2016-11-14 55 views
0

我有以下代碼來生成擴展令牌。沒有涉及的SDK。我使用Graph API Explorer獲取最初的臨時令牌。Facebook擴展令牌只有一頁,如何獲得休息

$api_action = 'me/accounts'; 
    $url = 'https://graph.facebook.com/' . $this->facebook_api_version . '/' . $api_action; 
    $url_with_token = $url . '?access_token=' . $this->facebook_temporary_access_token . ''; 
    $account = json_decode(file_get_contents($url_with_token)); 
    $page_access_token = $account->data[0]->access_token; 

    // Get extended access token 
    $access_token = ''; 
    $url = 'https://graph.facebook.com/oauth/access_token?client_id=' . $this->facebook_app_id . '&client_secret=' . $this->facebook_app_secret . '&grant_type=fb_exchange_token&fb_exchange_token=' . $page_access_token; 
    $result = file_get_contents($url); 
    $result = str_replace('access_token=', '', $result); 
    $result = explode('&expires', $result); 
    $facebook_extended_access_token = $result[0]; 
    echo '<pre>'; print_r($facebook_extended_access_token); echo '</pre>'; 
    return $facebook_extended_access_token; 

此應用程序有三個頁面與它關聯。問題是這隻會爲頁面A生成一個擴展標記。我已經使用Facebook Toke Debugger進行了驗證。

https://developers.facebook.com/tools/debug/access_token?q=

怎樣才能爲Facebook頁面B和C的擴展標記,而不僅僅是A.

+1

使用循環,而不是隻使用API​​調用返回的第一個標記...? – CBroe

+0

@CBroe我不認爲現在有多個商店會返回多個密鑰。我會馬上嘗試。 – Goose

回答

0

感謝CBroe的評論。

我發現我的代碼中的第一個API調用實際上是爲我的所有頁面返回臨時訪問標記,但是我設置爲只返回第一個。 $account->data[1]->access_token$account->data[2]->access_token舉行B和C.這是我最終的代碼爲那些發現它有用。

$api_action = 'me/accounts'; 
    $url = 'https://graph.facebook.com/' . $this->facebook_api_version . '/' . $api_action; 
    $url_with_token = $url . '?access_token=' . $this->facebook_temporary_access_token . ''; 
    $account = json_decode(file_get_contents($url_with_token)); 

    // Loop through each store 
    foreach ($account->data as $data) { 
    $page_access_token = $data->access_token; 
    // Get extended access token 
    $access_token = ''; 
    $url = 'https://graph.facebook.com/oauth/access_token?client_id=' . $this->facebook_app_id . '&client_secret=' . $this->facebook_app_secret . '&grant_type=fb_exchange_token&fb_exchange_token=' . $page_access_token; 
    $result = file_get_contents($url); 
    $result = str_replace('access_token=', '', $result); 
    $result = explode('&expires', $result); 
    $facebook_extended_access_token = $result[0]; 
    echo '<pre>'; print_r($facebook_extended_access_token); echo '</pre>'; 
    }