[英]Php Facebook API Page access tokens
我正在嘗試為question2answer(無需知識)構建一個插件,在該插件中發布新問題時,會將其作為活動發布到facebook頁面上。 實現這一點不是問題。 我遇到的是持久性。
據我了解,如果我錯了,請糾正我,因為您只能通過管理員用戶的帳戶直接獲取頁面的訪問令牌。 當我們已存儲其訪問令牌的頁面管理員因注銷而過期時,這將導致發布問題。 好吧,我們不能指望他們永遠保持登錄狀態,對嗎?
還有另一種解決方法嗎? 就像讓用戶在該頁面上發帖一樣?
這是我當前正在使用的代碼(這不是最終的,沒有錯誤處理)。 任何說qa_opt的內容只是存儲在question2answer數據庫中的內容
$facebook2 = new Facebook(array(
'appId' => qa_opt('facebook_app_id'),
'secret' => qa_opt('facebook_secret')
));
$facebook2->setAccessToken(qa_opt('facebook_page_access_code'));
// Try to extend token
$access_token = $facebook2->getExtendedAccessToken();
// As is, with the extended token, we currently post as the user, not the page. Let's fix that
$accounts = $facebook->api('/me/accounts?access_token='.$access_token);
foreach ( $accounts as $account )
{
if ( $account['id'] == qa_opt('facebook_page_id') )
{
$page_access_token = $account['access_token'];
break; // Stop processing foreach
}
}
$fbPageArgs = array('access_token' => $page_access_token,
'message' => 'A new question has been created!',
'link' => qa_q_path($params['postid'], $params['title'], true),
'name' => $params['title'],
'description' => $params['text']
);
$facebook2->api("/".qa_opt('facebook_page_id')."/feed?fields=access_token","post",$fbPageArgs);
您可以為粉絲頁面設置永不過期的令牌,我想這將解決您的問題。
遵循簡單的步驟:
獲取管理員(即您的)擴展令牌(有效期2個月)。 通過鏈接獲取long-lived token
。
使用此令牌獲取任何頁面的永不過期訪問令牌-
$facebook->api("/PAGE_ID?fields=access_token");
(您可以使用Facebook的調試工具來檢查令牌的有效性)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.