2012-10-03 104 views

回答

15

facebook developers

通過採用長壽命的用戶訪問令牌,查詢[用戶 ID] /佔端點現在將提供頁面訪問令牌不 的頁面,一個到期用戶管理。

所以,你必須與服務器端的呼叫交換您最初的短命令牌的壽星令牌:

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 

,然後查詢我/賬戶與壽星令牌。 Definitly爲我們工作,即調試器顯示: '截止日期:從不'


編輯 - 我們的過程

所以,我們做的是:

  • 第一client side authentication我們應用程序,在用戶接受所請求的權限並將他的帳戶與我們的應用程序連接後,我們會獲得「代碼」

    https://www.facebook.com/dialog/oauth? CLIENT_ID = YOUR_APP_ID & REDIRECT_URI = YOUR_REDIRECT_URI &範圍= COMMA_SEPARATED_LIST_OF_PERMISSION_NAMES & RESPONSE_TYPE =代碼

  • 現在在我們的服務器應用程序,我們使用server side authentication爲訪問令牌交易所代碼:

    https://graph.facebook.com/oauth/access_token? CLIENT_ID = YOUR_APP_ID & REDIRECT_URI = YOUR_REDIRECT_URI & client_secret = YOUR_APP_SECRET &代碼= CODE_GENERATED_BY_FACEBOOK

  • 有了這個的access_token我們做服務器側交換上述

  • 如所描述現在我們要求我/賬戶,並將所得的access_token總是有效

希望幫助

+1

感謝皮特,但是當我打電話通知我有這樣的錯誤響應 { 「錯誤」:{ 「消息」:「未知的錯誤有發生。「, 」type「:」OAuthException「, 」code「:1 } } –

+0

EXISTING_ACCESS_TOKEN是應用程​​序令牌還是頁面令牌?也許我想念一些事情:( –

+2

@Pete:你確定調試器顯示'Expires:Never'因爲對我來說它顯示'Expires:1354445684(在大約2個月內)' – RanRag

1

好吧,所以花了大約一週的時間研究,但這裏是我的解決方案。 在https://developers.facebook.com/tools/explorer/請確保您有manage_page作爲您的access_token的一部分。在使用這個代碼與你的應用程序ID,祕密,後重定向:

<?php 
    app_id = "APP_ID"; 
    $app_secret = "APP_SECERET"; 
    $post_login_url = "REDIRECT_URL"; 


    $code = $_REQUEST['code']; 

    //Obtain the access_token with publish_stream permission 
    if(empty($code)){ 
     $dialog_url= "http://www.facebook.com/dialog/oauth?" 
     . "client_id=" . $app_id 
     . "&redirect_uri=" . urlencode($post_login_url) 
     . "&COMMA_SEPARATED_LIST_OF_PERMISSION_NAMES"; 
     echo("<script>top.location.href='" . $dialog_url 
     . "'</script>"); 
    } 
    else { 


     $token_url="https://graph.facebook.com/oauth/access_token?" 
     . "client_id=" . $app_id 
     . "&redirect_uri=". urlencode($post_login_url) 
     . "&client_secret=" . $app_secret 
     . "&code=" . $code; 
     $response = file_get_contents($token_url); 
     $params = null; 
     parse_str($response, $params); 
     $access_token = $params['access_token']; 
     echo 'access token: ' . $access_token.'<br>'; 

     if($access_token){ 


      $token_url="https://graph.facebook.com/oauth/access_token?" 
     . "client_id=" . $app_id 
     . "&redirect_uri=". urlencode($post_login_url) 
     . "&client_secret=" . $app_secret 
     .'&grant_type=fb_exchange_token' 
     . "&fb_exchange_token=" . $access_token; 
     $response = file_get_contents($token_url); 
     $access_token = $params['access_token']; 
     echo 'new access token: '.$access_token; 

     } 
    }*/ 

?> 

該副本後,「新的訪問令牌」,回到https://developers.facebook.com/tools/explorer/當您在新的訪問令牌那裏過去到訪問令牌字段。 然後點擊提交。之後,在節點中,您將看到一個+ _ ___單擊此並向下滾動到帳戶並單擊它。找到您需要訪問令牌的頁面,並將其複製並粘貼到訪問密鑰字段中。點擊調試,你會看到它永遠不會過期。保存該令牌,只要您不重置應用程序,它就會保持有效。

4

我已經簡化皮特的回答了一下,添加步驟來獲得非過期頁面訪問令牌:

  1. 訪問以下網址,並注意在瀏覽器的地址欄中返回的訪問令牌:

    https://www.facebook.com/dialog/oauth?client_id=APP_ID&redirect_uri=REDIRECT_URI&scope=manage_pages,publish_stream&response_type=token

  2. 訪問以下網址與返回的數據中找到日Ë所需的頁面的名稱,並記下訪問令牌:

    https://graph.facebook.com/me/accounts?access_token=ACCESS_TOKEN_RETURNED_FROM_STEP_1

  3. 訪問以下網址並注意返回的訪問令牌:

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

  4. 使用Access Token Debugger以確保您的訪問令牌配置文件ID所需的頁面的ID匹配,它永遠不會過期

+0

重定向URI是什麼意思?如果我們正在做一些服務器到服務器並且不涉及瀏覽器或Web應用程序,該怎麼辦?如果必須的話,我可以站起來,但我寧願不要。 –

0

您可以使用下面的API從Facebook刷新令牌生活60天,只是當令牌即將到期,:在再次調用相同的API 60天的時間刷新其壽命回至60天從該時間點 令牌到期存在於到期參數和它的值是在秒

替換CLIENT_ID和cLIENT_SECRET與它們的實際值

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

在ACCESS_TOKEN

,把實際令牌值而不附加 「=的access_token」

2

還有一個更簡單的方法來做到這一點作爲2016年:)


  1. 轉到https://developers.facebook.com/tools/explorer

  2. 從下拉在右上角 側

  3. 點擊選擇您的應用在右手邊

  4. 在「獲取訪問令牌」按鈕只是應用下拉 下方在下拉菜單中選擇您想要獲取訪問令牌的頁面。 如果你沒有看到你的頁面列出,那麼你需要確保 你設置了頁面的管理員角色。您也可能需要 單擊下拉菜單中的「獲取頁面訪問令牌」,然後在下次單擊「獲取訪問 令牌」按鈕時,您的 頁面將顯示在下拉列表中。

  5. 點擊「訪問令牌」輸入字段

  6. 藍色感嘆號圖標點擊「打開在訪問令牌工具」,在彈出的 右下角按鈕

  7. 單擊「擴展訪問令牌」按鈕以獲取從不 到期的令牌


從這篇文章原始信息:https://www.rocketmarketinginc.com/blog/get-never-expiring-facebook-page-access-token/

相關問題