2012-02-03 68 views
3

是否有可能編寫一個在某人牆上發佈消息的應用程序,並且該用戶是否未接受此許可?使用Facebook API發佈在某人牆上PHP

這裏是我的代碼:

$attachment = array(
     'access_token' => $access_token, 
     'message' => "$message", 
     'name' => "testName", 
     'description' => "Check Out new message", 
     'link' => '', 
     'picture' => "test message" 
    ); 

    try { 
     $response = $facebook->api("/userId/feed/", 'POST', $attachment); 
    } catch (FacebookApiException $e) { 

    } 

回答

4

這是有可能以同樣的方式,你會張貼到登錄用戶的牆:除了使用端點:

https://graph.facebook.com/me/feed 

只需使用:

https://graph.facebook.com/[UserID]/feed 

飼料

此連接對應於用戶的Wall。您可以通過向PROFILE_ID /饋送連接發送HTTP POST請求來創建鏈接,發佈或狀態消息。要查看更多詳細信息,請參閱鏈接,帖子和狀態消息文檔。

引用來自API reference on the user object的「feed」子部分。

+0

但我代表記錄的用戶代表應用程序發送此消息:/並且我想代表應用程序發佈該消息 – gruber 2012-02-03 18:05:44

+0

請檢查我的編輯 – gruber 2012-02-03 18:07:30

+0

我認爲您必須在其中插入實際的userId,例如(「/」。$ userId。「/ feed /」,'POST',... – 2012-02-03 18:12:44

6

下面是我爲了文檔目的而寫的主題。希望它可以幫助你:

與Facebook的圖形API 1月27日創建的應用程序,2012

在Facebook上 入門開始構建使用Graph API一個Facebook應用程序,您首先需要註冊與Facebook之前,你可以開始在https://developers.facebook.com編碼。創建帳戶或使用現有帳戶登錄後,您需要創建一個新的應用程序(或者如果您使用的是現有應用程序,則可以正確配置應用程序)。 要創建您的Facebook應用程序,請轉至https://developers.facebook.com/apps並點擊「創建新應用程序」(或「編輯應用程序」,如果您已經創建了一個並且想要配置它)。在設置 - >基本選項卡下,您至少需要填寫應用顯示名稱,聯繫人電子郵件和網站URL。其中,網站URL是最重要的,並且必須指出你的應用程序將駐留在哪裏(如果你還不知道,它可以隨時更新)。接下來,進入設置 - >驗證對話框選項卡。您不需要填寫任何內容,但這是一個好主意,因爲這是用戶在允許您的應用訪問其帳戶時將看到的內容。保存所有內容並返回https://developers.facebook.com/apps。你應該看到你剛剛在這個頁面上配置的應用程序。從這一點開始,您需要複製下來的兩件事是App ID/API密鑰和App Secret。您現在已準備好開始創建您的應用程序。

瞭解流程 在開始對應用程序進行編碼之前,最好了解對用戶進行身份驗證並將您的應用程序安裝到他們的Facebook帳戶上的流程。直到您的應用程序安裝在用戶帳戶上,並且他們已嚮應用程序明確授予將內容發佈到其帳戶的權限,您將無法執行任何操作。好消息是,用戶只需要一次認證應用程序(除非他們卸載它)。在下面的圖看看,瞭解流程是如何工作的:

驗證用戶 要啓動身份驗證的過程中,你必須建立一個鏈接,引導用戶到你的應用程序。這就是你將如何建立你的鏈接: https://www.facebook.com/dialog/oauth?client_id = [您的API密鑰] & redirect_url = [將處理身份驗證的服務] & scope = [您需要的權限] & display = touch - client_id:這是您在創建應用程序時從Facebook獲得的API密鑰。 - redirect_url:這是將處理您所有身份驗證的服務。它應該位於您在使用Facebook設置應用程序時配置的網站URL。這是URL在整個認證過程中必須保持不變。 - 範圍:這是用戶帳戶所需的任何權限。你只應該問你真正需要什麼。我們通常只需要publish_stream。有關權限的完整列表,請參閱:https://developers.facebook.com/docs/reference/api/permissions/ - display:這是告訴Facebook要使用的皮膚。由於我們正在將此應用程序用於移動應用程序,因此應將其設置爲「touch」。如果您沒有開發移動設備,則可以一起省略這一部分。

當用戶點擊您建立的鏈接時,如果他們登錄,他們將被帶到下面的頁面。如果他們沒有登錄,他們將被提示首先登錄。如果用戶接受你的應用程序,拒絕你的應用程序請求,或者未能登錄,他們將被定向到你上面指定的redirect_url。根據用戶在此頁面上的操作,當Facebook發送用戶時,Facebook會在您的redirect_url附加不同的查詢字符串。

如果用戶單擊「允許」,它們將被髮送到您的redirect_url,並且查詢字符串將包含一個名爲代碼的變量。這將用於獲取用戶的身份驗證令牌,這將允許您從App訪問其帳戶。如果用戶點擊「不允許」,登錄失敗或其他問題,則以下查詢字符串將被添加到您的redirect_url:error_reason,error和error_description。 成功的請求到您的重定向URL的一個例子: =「> http://niobiumstudio.com/appia/fbconnect/auth.php?code=AQDi7fT3whSPJr0O2ECwv494QSSNyrTFK_SGIexEFUGmw5XS8SvzfYiAsxpn0FspQYHkMgaUYH--PS1AnJnCtE-iUdRl6V3Moxfk4Cqz0igZbnkHxWi4Yl_KphXiRkbnCCW_zDqb4W2lfew9sla4FPDUKhXscRuQeI--61uQ0uStb9GwrOH4V94DjGWk1yS-Ffs# =

將代碼GET變量傳遞迴redirect_url後,您將可以與Facebook交換它以獲取您的OAuth訪問令牌。要執行此操作,您需要使用剛剛獲得的代碼向Facebook發出請求返回。以下是獲取訪問令牌的請求: https://graph.facebook.com/oauth/access_token?client_id= [您的API密鑰] & redire ct_url = [處理身份驗證的服務] & client_secret = [您的應用程序的祕密] & code = [用戶接受碼] client_id:這是您在創建應用程序時從Facebook獲得的API密鑰。 redirect_url:這是將處理您所有身份驗證的服務。它應該位於您在使用Facebook設置應用程序時配置的網站URL。這是URL在整個認證過程中必須保持不變。 這與您使用的URL相同以獲取代碼 client_secret:這是您在創建應用程序時從Facebook獲得的應用程序密碼。 code:這是您從前一個請求中返回到查詢字符串中的代碼。

當您成功提出此請求時,您將收到OAuth訪問令牌,它允許您訪問用戶的Facebook賬戶。這是認證的最後一步。與「代碼」不同,訪問令牌將位於響應正文中,而不是GET變量。這是一個成功的響應將是什麼樣子: =的access_token AAAB9BKw79ywBAPjNYxRwLhUE1mOgd3Ei1Nq2gPXxyWhiCISZAZA6ihZAor1NEPHRjuQ5x7NrkA7ITuV2IHVZBs6ZAaigbNdsMnX3l58RrQAZDZD &到期= 5862 你將不得不解析訪問令牌了,這是你會用什麼訪問用戶的帳戶。另請注意,存在與訪問令牌一起發送的過期值。您將無法存儲此訪問令牌,並在您選擇任何時間的較晚時間使用該令牌。你必須馬上使用它來做你所需要的,然後丟棄它。 如果請求獲得訪問令牌失敗,會在身體,而不是訪問令牌和過期收到一個錯誤。與訪問令牌不同,它將採用JSON格式,因此請注意這一點。 *有關身份驗證過程的詳細信息,請參閱:https://developers.facebook.com/docs/authentication/

發佈到用戶的賬戶 現在你有訪問令牌,你就能直到令牌過期訪問用戶的帳戶。有幾十件事情可以通過各種權限來完成,但由於我們只要求publish_stream,因此本文檔將僅涵蓋更新用戶的狀態消息。 要更新用戶的狀態,我們將不得不作出一個POST請求發送到以下網址: https://graph.facebook.com/me/feed?access_token=[Access令牌] 的access_token:這是訪問令牌你從認證過程中獲得了。 POST應該包含一個名爲message的變量。消息變量是一個字符串,無論它設置爲什麼,用戶的狀態消息將被設置爲。 這裏是一個「Hello World」的要求是什麼樣子,如果你是用捲曲和PHP POST請求 $ fb_post_url =「https://graph.facebook.com/me/feed?access_token=」 $的access_token。 $ message_text =「Hello World!」;

$ CH = curl_init(); curl_setopt($ CH,CURLOPT_URL,$ fb_post_url); curl_setopt($ ch,CURLOPT_POST,true); curl_setopt($ CH,CURLOPT_POSTFIELDS, 「消息=」 $ MESSAGE_TEXT。); curl_setopt($ ch,CURLOPT_RETURNTRANSFER,true); curl_setopt($ ch,CURLOPT_TIMEOUT,30); $ fb_post_response = curl_exec($ ch); curl_close($ ch) POST請求將在響應的主體中返回「成功」或「失敗」JSON消息。

有關發佈到用戶帳戶的詳細信息請參閱: http://developers.facebook.com/docs/reference/api/status/

驗證用戶的誰已經接受了你的App 用戶已經接受了您的應用程序後,他們將不再提示「接受」您應用程序,因爲它已經安裝,因此點擊鏈接。身份驗證過程保持完全一樣,除非點擊將他們帶到身份驗證頁面的鏈接時,Facebook將確定該應用程序已被接受,並簡單地將用戶轉發到您的redirect_url,其代碼附加到查詢字符串。如果用戶尚未登錄,該用戶將被要求登錄他們的Facebook帳戶,但他們將永遠不必再次「接受」您的應用程序。如果您將來更改您的應用程序並添加其他權限,則下次他們嘗試使用您的應用程序時,系統將提示他們僅接受新的權限。

+0

對不起格式化 - 它是從我寫的一個word文檔複製而來,它應該給你一個基本的想法, – Jack 2012-02-03 19:18:39

+0

這裏是一個快速和骯髒的模型,「config.php」包含你的「API密鑰」和「API祕密」,不要在生產中使用它,只是一個快速的模型。http://pastebin.com/hx4uuSjz – Jack 2012-02-03 19:21:32

0

答案是YES和NO :)如果可以的話,您無法發佈,如果可以的話,報告爲錯誤。如果我發現有人寫我的牆,這可能是一個瘋狂的世界。但有一種方法。如果你代表他的朋友寫信給人牆。但在這種情況下,你必須得到朋友的許可。

0

下面是一些代碼,我用它來使用PHP捲曲發佈到Facebook塗鴉牆:

$username = "${string}"; 
$message = "${string}"; 
$access_token = "${string}"; 


$url=curl_init(); 
$attachment=array('access_token'=>$access_token, 'message'=>$message); 

curl_setopt($url, CURLOPT_URL, "https://graph.facebook.com/".$username."/feed"); 
curl_setopt($url, CURLOPT_POST, true); 
curl_setopt($url, CURLOPT_POSTFIELDS, $attachment); 
curl_setopt($url, CURLOPT_RETURNTRANSFER, true); 

$result = curl_exec($url); 

希望這可以幫助你

0

在你的代碼有:

$response = $facebook->api("/userId/feed/", 'POST', $attachment); 

你有隻替換爲:

$response = $facebook->api("/".$userId."/feed/", 'POST', $attachment); 

並使用您想要發佈的用戶ID。

0

文件撰寫( '');

{ 「錯誤」:{ 「消息」: 「一種主動訪問令牌必須用於查詢當前用戶的信息。」, 「類型」: 「OAuthException」, 「代碼」:2500}

相關問題