我想知道是否有可能有一個永遠爲後到期到我的網頁的訪問令牌如何獲得不會過期的頁面訪問令牌?
現在我得到的訪問令牌:
https://graph.facebook.com/me/accounts
我有publish_stream
和manage_pages
許可,但使用Access Token Debugger我看到該令牌在大約1小時內過期。有沒有辦法永不過期?
我想知道是否有可能有一個永遠爲後到期到我的網頁的訪問令牌如何獲得不會過期的頁面訪問令牌?
現在我得到的訪問令牌:
https://graph.facebook.com/me/accounts
我有publish_stream
和manage_pages
許可,但使用Access Token Debugger我看到該令牌在大約1小時內過期。有沒有辦法永不過期?
通過採用長壽命的用戶訪問令牌,查詢[用戶 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總是有效
希望幫助
好吧,所以花了大約一週的時間研究,但這裏是我的解決方案。 在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/當您在新的訪問令牌那裏過去到訪問令牌字段。 然後點擊提交。之後,在節點中,您將看到一個+ _ ___單擊此並向下滾動到帳戶並單擊它。找到您需要訪問令牌的頁面,並將其複製並粘貼到訪問密鑰字段中。點擊調試,你會看到它永遠不會過期。保存該令牌,只要您不重置應用程序,它就會保持有效。
我已經簡化皮特的回答了一下,添加步驟來獲得非過期頁面訪問令牌:
訪問以下網址,並注意在瀏覽器的地址欄中返回的訪問令牌:
訪問以下網址與返回的數據中找到日Ë所需的頁面的名稱,並記下訪問令牌:
https://graph.facebook.com/me/accounts?access_token=ACCESS_TOKEN_RETURNED_FROM_STEP_1
訪問以下網址並注意返回的訪問令牌:
使用Access Token Debugger以確保您的訪問令牌配置文件ID所需的頁面的ID匹配,它永遠不會過期
重定向URI是什麼意思?如果我們正在做一些服務器到服務器並且不涉及瀏覽器或Web應用程序,該怎麼辦?如果必須的話,我可以站起來,但我寧願不要。 –
您可以使用下面的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」
還有一個更簡單的方法來做到這一點作爲2016年:)
從下拉在右上角 側
點擊選擇您的應用在右手邊
在「獲取訪問令牌」按鈕只是應用下拉 下方在下拉菜單中選擇您想要獲取訪問令牌的頁面。 如果你沒有看到你的頁面列出,那麼你需要確保 你設置了頁面的管理員角色。您也可能需要 單擊下拉菜單中的「獲取頁面訪問令牌」,然後在下次單擊「獲取訪問 令牌」按鈕時,您的 頁面將顯示在下拉列表中。
點擊「訪問令牌」輸入字段
藍色感嘆號圖標點擊「打開在訪問令牌工具」,在彈出的 右下角按鈕
單擊「擴展訪問令牌」按鈕以獲取從不 到期的令牌
從這篇文章原始信息:https://www.rocketmarketinginc.com/blog/get-never-expiring-facebook-page-access-token/
感謝皮特,但是當我打電話通知我有這樣的錯誤響應 { 「錯誤」:{ 「消息」:「未知的錯誤有發生。「, 」type「:」OAuthException「, 」code「:1 } } –
EXISTING_ACCESS_TOKEN是應用程序令牌還是頁面令牌?也許我想念一些事情:( –
@Pete:你確定調試器顯示'Expires:Never'因爲對我來說它顯示'Expires:1354445684(在大約2個月內)' – RanRag