2013-04-22 189 views
0

我創建了一個帶圖api的Facebook地方serach。但訪問密鑰每兩小時過期一次。爲此,我已經實現了下面的代碼如何解決Facebook訪問令牌到期問題?

$app_id = "---"; 
$app_secret = "----"; 
$my_url = ""; 
$code = $_REQUEST["code"]; 
if (isset($code)) { 

    $token_url="https://graph.facebook.com/oauth/access_token?client_id=" 
     . $app_id . "&redirect_uri=" . urlencode($my_url) 
     . "&client_secret=" . $app_secret 
     . "&code=" . $code . "&display=popup"; 
    $response = file_get_contents($token_url); 
    $params = null; 
    parse_str($response, $params); 
    $access_token = $params['access_token']; 
} 
$FacebookGraphURL = 'https://graph.facebook.com/search?fields=id,username,name,category,website,likes,location&q='.$keyword.'&type=place&center='.$center.'&distance='.$radius.'&limit=5&access_token='.$access_token; 
    $FacebookGraphJSON = file_get_contents($FacebookGraphURL); 

但是,這是給下面的錯誤:

Notice: Undefined index: code in /opt/lampp/htdocs/APIcomparison/facebook_graph.php on line 24 

我缺少的是什麼?另一件事我不知道用什麼$ my_url

感謝提前。

+0

您試圖訪問'$ _REQUEST [ 「密碼」]',它是否存在與否。用'isset'檢查_that_(並且不必將th值複製到另一個變量)。 – CBroe 2013-04-23 15:26:56

+0

@CBroe,我已經編輯了if(isset($ _REQUEST [「code」])) 的代碼,但問題永遠不會進入if條件,但應該始終如一。 – user2302780 2013-04-24 00:40:38

+0

爲什麼不直接使用PHP SDK - 爲您自動處理所有這些(解壓縮代碼,交換它爲一個訪問令牌)......因此不需要「手動」來完成。 – CBroe 2013-04-24 08:31:06

回答

1

您是否通過Graph Explorer工具生成訪問令牌?如果是這樣,這些令牌有2小時的到期時間。

您可以通過Facebook登錄/ OAuth流程生成一個訪問令牌,其有效期爲60天,在此期間,您可以通過點擊'allow(允許)您的應用程序訪問您的(或任何用戶)Facebook用戶帳戶'按鈕在授權對話框上。獲得訪問令牌後,您可以將其換成長壽命令牌。在Facebook上的OAuth這裏

詳情:https://developers.facebook.com/docs/reference/dialogs/oauth/

一個簡單的方法來生成一個訪問令牌是使用由Temboo提供了Facebook的OAuth支持。如果您只需要一個令牌,那麼您可以使用Facebook OAuth嚮導,這意味着您不必編寫任何代碼來生成令牌。詳情點擊這裏:https://www.temboo.com/library/Library/Facebook/

(全面披露:我在Temboo工作)

+0

爲什麼這是downvoted? – Madbreaks 2013-04-26 17:10:53

+0

@Cormac驅動程序,我訪問了tembo.com。我發現他們說要創建一個開發fb賬戶並創建一個我已經擁有的應用程序,但我如何獲得持久的訪問令牌? – user2302780 2013-04-26 20:02:24

+0

如果您使用Temboo的InitializeOAuth和FinalizeOAuth Choreos來生成您的訪問令牌,請查看名爲「LongLivedToken」的FinalizeOAuth choreo上的可選輸入 - 它允許您指定您需要長期訪問令牌。 – 2013-04-26 20:16:40