2012-01-19 233 views
3

我想解決如何發佈到Facebook頁面牆,當我的應用程序作爲不同的Facebook用戶(誰不是頁面管理員)。如何發佈到Facebook頁面(如何獲取頁面訪問令牌+用戶訪問令牌)

我得到一個範圍,而測試的錯誤消息: 異常:200:用戶未授權應用程序來執行此操作

頁管理員訪問應用程序,並接受了以下權限:publish_stream, manage_pages,offline_access

下面是代碼我打算使用:

// Insert Page Administrators ID here 
// This user is not the same user that is currently logged in and using the app 
// This user is the page administrator who has authorised: 
// - manage_pages 
// - offline_access 
// - publish_stream 

$user_id = '123456789'; 

// Insert Page ID here 
$page_id = '123456789'; 

$accounts = $facebook->api('/'.$user_id.'/accounts'); 

foreach($accounts['data'] as $account) 
{ 
    if($account['id'] == $page_id) 
    { 
    $page_access_token = $account['access_token']; 
    echo "<p>Page Access Token: $page_access_token</p>"; 
    } 
} 

// publish to the wall on your page 
try 
{ 
    $result = $facebook->api(array("uid" => $page_id, 
            "method" => "stream.publish", 
            "access_token" => $page_access_token, 
            "message" => $message,)); 
} 
catch (FacebookApiException $e) 
{ 
    error_log('FB Error: Could not post on Page Wall. Page ID: ' . $page_id); 
    error_log('FB Error Message: ' . $e); 
} 

注:有可能在上面的代碼PHP錯誤,正如我剛纔拼接它的飛行,但它不是SO 3 M這就是我需要糾正的PHP錯誤,但更多的是我理解我如何去做這個過程。

問題: 如果沒有用於頁面管理員的活動用戶訪問令牌,我無法訪問$ user_id/accounts信息。

我試圖達到的最終結果是: 1.)一個普通的FB用戶轉到應用程序並提交一個表格 2.)該應用程序在FB頁面牆上發佈消息,該消息不是由FB用戶擁有,但之前已被頁面管理員授權,具有以下權限manage_pages,publish_stream和offline_access

Q1。由於頁面管理員已經接受了適當的權限,爲什麼我不能生成活動的用戶訪問令牌,而實際的頁面管理員用戶沒有登錄到網站? Q2302。有沒有辦法,我可以得到頁面管理員user_id相當於/ $ user_id /帳戶,當作爲一個不同的用戶登錄到Facebook(這就是爲什麼我不使用/我/帳戶)?

Q3。請確認我對需要頁面訪問令牌發佈到頁面牆的理解是正確的(還是需要頁面管理員的用戶access_token - 請參閱Q1)?

Q4。任何人都可以獲得每種access_token實際可以訪問的資源嗎?

如果您需要更多信息,請讓我知道。 我花了最後幾天的工作,我卡住了。

謝謝!

回答

3
  1. 你可以要求manage_pages頁面管理員與offline_access一起。我在我的製作應用程序中這樣做是爲了能夠將預定發佈貼到網頁的牆上。

  2. 沒有。不可能。這就是要求權限是關於什麼的。爲什麼不是每個人都能管理其他人的頁面。如果您可以管理任何人的網頁,而您沒有授予您訪問權限,您可以想象嗎?

  3. 要作爲頁面發佈到頁面,您需要一個頁面訪問令牌。要以用戶身份發佈到頁面的牆上,您需要一個用戶訪問令牌。

  4. 是的,請參閱:https://developers.facebook.com/docs/reference/api/permissionshttps://developers.facebook.com/docs/authentication/

如果您對其中任何一個問題,請不要啓動一個新的問題。對於一個用戶遇到4個問題,然後被問到每個問題的後續問題,這對於用戶來說並不公平。

+0

1.我已經要求此權限和可以確認頁面管理員有這個爲我的應用程序啓用了許可 2.我瞭解需要權限,但我的應用程序將安裝在客戶Facebook頁面上,並且隨着用戶創建新項目,我希望在客戶Facebook頁面牆上發佈信息。因此,當試圖發佈消息時,使用該應用程序的用戶不是Page管理員,而只是一個日常用戶。 – James

+0

3.感謝您澄清頁面訪問令牌用途的目的。這聽起來好像我應該能夠使用當前用戶訪問令牌發佈到頁面牆(由頁面管理員擁有 - 已批准相應權限 - manage_pages/offline_access),但我得到身份驗證錯誤(我將跟蹤下載並更新我的文章) 4.我已經閱讀了這些頁面,似乎沒有得到我需要的答案的運氣。 錯誤日誌:未捕獲異常:240:需要指定有效用戶 – James

+0

如果您對其中任何一項有任何疑問,請發起一個新問題。對於一個用戶遇到4個問題,然後被問到每個問題的後續問題,這對於用戶來說並不公平。 – DMCS

2

我已經在Django完成:

步驟獲得Page_access_token:

facebook_page_id=360729583957969 
graph = GraphAPI(request.facebook.user.oauth_token.token)      
page_access_token=graph.get(facebook_page_id+'?fields=access_token') 

這樣,您就可以得到頁面訪問令牌。

您可以檢查FB上GraphAPIexplorer這件事:

http://developers.facebook.com/tools/explorer 
GET URL: fb_page_id?fields=access_token 

例如:360729583957969?fields=access_token 會給你page_access_token

相關問題