2011-12-28 12 views
4

publish_stream的文檔顯示爲:「允許您的應用程序將內容,評論和喜歡發佈到用戶的流和用戶的流朋友,通過此權限,您可以隨時將內容發佈到用戶的Feed中,而無需使用offline_access。「如何使用publish_stream發佈到Facebook用戶朋友的牆,但使用應用程序訪問令牌不是offline_access

所以工作流程是這樣的:

  1. 的FB.login()與publish_stream範圍,像這樣:

    FB.login(function (response) { 
        if (response.authResponse) { 
         FB.api('/me/permissions', function (permissions) { 
          if (permissions.data[0].publish_stream == 1) { 
           //user has now granted publish_stream to this application 
          } 
         }); 
        } 
    }, { scope: 'publish_stream' }); 
    
  2. 使用C#的Facebook SDK使用張貼到該用戶的朋友的牆應用程序的訪問令牌。

    var client = new FacebookClient(FacebookAppId, FacebookAppSecret); 
    
    // Build the wall post 
    dynamic parameters = new ExpandoObject(); 
    parameters.message = facebookDeliveryQueueItem.MessageBody; // user message 
    
    // Post to the wall 
    client.Post(facebookRecipientId + "/feed", parameters); 
    

這將返回:

{"error":{"message":"(#200) The user hasn't authorized the application to perform this action","type":"OAuthException"}} 

但是!如果我嘗試使用此代碼發佈到我自己的牆上,它就可以正常工作。

如果用戶向我的應用程序授予publish_stream,然後我可以使用APPLICATION訪問令牌(您可以通過發出GET到https://graph.facebook.com/oauth/access_token?grant_type=client_credentials&client_id=APP_ID_HERE&client_secret=APP_SECRET_HERE)來發布該用戶的牆上 - 但不是該用戶的朋友的牆。

所以是「和用戶的朋友溪流」的Facebook文件的一部分謊言或我做錯了嗎?那裏有大量的錯誤信息。

+1

這個很奇怪。我可以使用圖API API工具使用該權限發佈到朋友的牆上。 https://developers.facebook.com/tools/explorer你可以試試看看它是否適合你? – DMCS 2011-12-28 06:09:12

+1

正如bool.dev所說,你需要用戶訪問令牌,而不是app_access_token ..我試圖使用圖形API瀏覽器並使用post方法發佈到我的牆和朋友的牆上 – Vijay 2011-12-28 06:51:54

+0

@ bool.dev那麼這是我的問題 - 是在說我可以使用應用程序令牌在用戶朋友的牆上張貼文檔時文檔錯誤,或者這不是您如何做的? – 2011-12-28 18:01:21

回答

1

您應該在發出請求之前明確指定 access_token,如果您省略它,則使用當前用戶的 access_token

調用之前添加這client.Post

parameters.access_token = FacebookAppId+"|"+FacebookAppSecret; 

的文檔是正確的(在這種情況下)。一旦用戶授予您publish_stream權限,您可以在用戶和他的朋友牆上張貼使用應用程序access_token而不需要需要詢問offline_access!)的權限。一些用戶設置隱私設置以拒絕特定用戶/應用程序或任何其他人發佈內容。

確保您可以張貼在特定的朋友(一個你有問題),使用http://facebook.com使用Graph API Explorer工具(請務必提供應用access_token)牆。

+0

var client = new FacebookClient(FacebookAppId,FacebookAppSecret)將用於該帖子的access_token設置爲已完成。 – 2012-01-04 18:40:32

+0

@DanielCoffman,你是對的,我沒有意識到c#SDK的行爲,並假設它的行爲像官方SDK(這是案件),我已經重寫了答案,希望它會幫助。 – 2012-01-04 20:03:44

+0

@JuicyScripter我一直在嘗試使用應用程序訪問令牌發佈朋友的牆,使用路徑'friendId/feed',但這會導致我的朋友(來自我的應用程序)的狀態更新,而不是發給我朋友的從我的牆(通過我的應用程序)。我應該使用不同的路徑嗎? – 2012-06-27 22:07:09

相關問題