0

我試圖讓這種方式:PHP + Facebook:如何獲得access_token + 60天訪問令牌?

https://graph.facebook.com/oauth/access_token?    
    client_id=APP_ID& 
    client_secret=APP_SECRET& 
    grant_type=fb_exchange_token& 
    fb_exchange_token=EXISTING_ACCESS_TOKEN 

在URL地址的所有變量設置正確,但是當我把這個網址到瀏覽器中,我得到:

{ 
    "error": { 
     "message": "No user access token specified", 
     "type": "OAuthException", 
     "code": 1 
    } 
} 

過並重新開始。我究竟做錯了什麼?

編輯:

我的當前設置: 腳本的地址:www.domain.com/folder/index.php

$my_url = "www.domain.com"

在Facebook的: namespace:my_namespace

應用程序域: domain.com

網站URLhttp://www.domain.com/

這是我的設置,但仍得到相同的錯誤

回答

1

你把他們現有的訪問令牌?你應該先有一個access_token,你應該發回來獲得擴展的到期訪問令牌。

從錯誤中,我可以理解的是,你沒有給他們發送令牌。

這是我在其他一些問題中回答的代碼。它在FB文檔中清楚地給出了它。這個代碼獲取短期標記,將其發回並擴展它,並獲取長期存在的access_token。

<?php 

//read more : https://developers.facebook.com/docs/howtos/login/server-side-login/ 
session_start(); 
    $app_id = "xxxxxxxxxxxxxx"; 
    $app_secret = "xxxxxxxxxxxxxxxx"; 
    $my_url = "www.stackoverflow.com/"; // redirect url 

    $code = $_REQUEST["code"]; 

    if(empty($code)) { 
    // Redirect to Login Dialog 
    $_SESSION['state'] = md5(uniqid(rand(), TRUE)); // CSRF protection 
    $dialog_url = "https://www.facebook.com/dialog/oauth?client_id=" 
     . $app_id . "&redirect_uri=" . urlencode($my_url) . "&state=" 
     . $_SESSION['state'] . "&scope=publish_stream,read_friendlists,email"; 


    echo("<script> top.location.href='" . $dialog_url . "'</script>"); 
    } 
if($_SESSION['state'] && ($_SESSION['state'] === $_REQUEST['state'])) { 
    $token_url = "https://graph.facebook.com/oauth/access_token?" 
     . "client_id=" . $app_id . "&redirect_uri=" . urlencode($my_url) 
     . "&client_secret=" . $app_secret . "&code=" . $code; 

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


//save it to database  
?> 
+0

感謝Kishor爲您解答。我找到了你的代碼,但是我對'$ my_url'有問題。這在Facebook開發人員部分的這個URL?比方說,我有'domain.com/my_addr/script_which_contains_the_code_above.php'中的應用程序,'$ my_url'應該是什麼?謝謝 – user984621

+0

它應該是,這個腳本應該在用戶進入的着陸頁。所以他們被帶到oauth,你會得到一個訪問令牌。他們被重定向到您希望他們去的網站。這應該是$ my_url。 – Kishor

+0

Kishor,請看看更新的OP。因爲我現在有點迷路了,所以我添加了當前的設置。 – user984621

1

您不能在那裏放置App令牌。它必須是一個用戶訪問令牌。請使用現有的用戶訪問令牌。