2015-09-30 149 views
5

我需要在Facebook頁面上發佈消息。具體而言,我想通過cron發佈。使用Facebook API 5.0獲取頁面訪問令牌PHP

下面介紹一下API文檔說:

Page Access Token – These access tokens are similar to user access tokens, except that they provide permission to APIs that read, write or modify the data belonging to a Facebook Page. To obtain a page access token you need to start by obtaining a user access token and asking for the manage_pages permission. Once you have the user access token you then get the page access token via the Graph API.

我怎麼能確定地獲得一個頁面回調用戶訪問和頁面訪問令牌?這可能嗎?

+0

你想從cron或PHP做到這一點嗎? –

+0

@NateBarbettini即使用cron也可以是PHP,這不排除彼此......? –

+0

@AxelAmthor夠公平的,我忘記了。 –

回答

5

你需要一個擴展頁面標記,它永遠有效。你得到一個這樣的:

  • 授權與manage_pages許可(和publish_pages如果你想在以後發佈的頁面),以獲得令牌的用戶
  • 擴展用戶令牌
  • 使用/me/accounts?fields=access_token與擴展用戶令牌來獲得與擴展頁令牌所有信息頁的列表 - 或者使用/page-id?fields=access_token得到一個擴展頁令牌特定頁面

所有令牌以及如何延長用戶令牌信息:

0

我只有JavaScript代碼,但是一旦您有訪問令牌,您可能會得到可由給定用戶管理的頁面。這將包含一個頁面的訪問令牌爲他們每個人:

jQuery.ajax({type: "GET", 
       url: "https://graph.facebook.com/v2.2/me/accounts?access_token=" + userToken, 
       async: false, 
       data: jsonRequest, 
       dataType: "json", 
       cache: false, 
       success: function(data) 
       { 

給予回覆的數據是這樣的:

{ 
    "data": [ 
    { 
     "access_token": "CAACni8TcBB0B...cZBJfwZDZD", 
     "category": "Computers/Technology", 
     "name": "abc", 
     "id": "...", 
     "perms": [ 
     "ADMINISTER", 
     "EDIT_PROFILE", 
     "CREATE_CONTENT", 
     "MODERATE_CONTENT", 
     "CREATE_ADS", 
     "BASIC_ADMIN" 
     ] 
    }, 
    { 
     "access_token": "CAA...ZDZD", 
     "category": "App Page", 
     "name": "xyz", 
     "id": "....", 
     "perms": [ 
     "ADMINISTER", 
     "EDIT_PROFILE", 
     "CREATE_CONTENT", 
     "MODERATE_CONTENT", 
     "CREATE_ADS", 
     "BASIC_ADMIN" 
     ] 
    } 
    ], 

access_token是你的網頁標記。您可以輕鬆地將上述請求轉換爲PHP。

+0

非常感謝您的回覆。 我明白,我怎麼能得到的頁面訪問令牌。 但我如何獲得用戶令牌? –

+0

想我發現: 1)獲取從一個訪問令牌:https://developers.facebook.com/tools/explorer/ 2)從https://graph.facebook.com/oauth/弄了半天活的訪問令牌的access_token?grant_type = fb_exchange_token&CLIENT_ID = client_secret = fb_exchange_token = 3)獲得永久訪問令牌與您的先例鏈接 –

2

PHP V5 API

下面的代碼24小時撓頭的工作後,我....希望這有助於順便說一下,如果你需要這個代碼工作你應該已經完成​​了前兩步

  1. 應該有登錄到Facebook的我用getRedirectLoginHelper
  2. 設置會話變量,在電話會議上收到的用戶訪問令牌後臺文件$_SESSION['fb_access_token'] = (string) $accessToken;

$fbApp = new Facebook\FacebookApp('xxx', 'xxx', 'v2.7'); 
$fb  = new Facebook\Facebook(array(
    'app_id' => 'xxx', 
    'app_secret' => 'xxx', 
    'default_graph_version' => 'v2.7' 
)); 
$requestxx = new FacebookRequest(
    $fbApp, 
    $_SESSION['fb_access_token'],//my user access token 
    'GET', 
    '/{page-id}?fields=access_token', 
    array('ADMINISTER') 
); 
$responset = $fb->getClient()->sendRequest($requestxx); 
$json   = json_decode($responset->getBody()); 
$page_access = $json->access_token; 

//posting to page 
$requesty = new FacebookRequest(
    $fbApp, 
    $page_access , 
    'POST', 
    '/{page-id}/feed?message=Hello fans YYYYYYYYYYYYYYY' 
); 
$response = $fb->getClient()->sendRequest($requesty); 
var_dump($response); 
+0

這就是我一直在尋找答案!謝謝。 –

+0

無法正常工作,引發致命錯誤:在第24行找不到/home/wwwdj4yo/public_html/wp-content/plugins/fb-reviews/classes/_import.php類'FacebookRequest'。 請嘗試實際測試回答之前發佈,因爲它節省了其他人浪費時間的人誰不知道他們在說什麼考慮的建議。 –

+1

請理解我使用PHP文件不是一個WP-插件內檢查,這在2016年爲我工作回來,和另一個人在2017年二月,因此的副本,而不是粘貼代碼,請檢查文檔和比較你的代碼! – Fara

1

你可以在網頁令牌是這樣的:

$response = $fb->get('/'.$pageId.'?fields=access_token', (string)$accessToken); 
$json = json_decode($response->getBody()); 
$page_token = $json->access_token; 
$response = $fb->post('/'.$pageId.'/feed', $fbData, $page_token); 
相關問題