簡體   English   中英

PHP Facebook API頁面訪問令牌

[英]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);

您可以為粉絲頁面設置永不過期的令牌,我想這將解決您的問題。

遵循簡單的步驟:

  1. 獲取管理員(即您的)擴展令牌(有效期2個月)。 通過鏈接獲取long-lived token

    擴展令牌

  2. 使用令牌獲取任何頁面的永不過期訪問令牌-

     $facebook->api("/PAGE_ID?fields=access_token"); 

(您可以使用Facebook的調試工具來檢查令牌的有效性)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM