2014-01-23 73 views
0

我正在使用官方Facebook .NET SDK來發布以下代碼中的music.listens動作。通過.NET SDK在Facebook上發佈音樂監聽動作​​

  var result = facebook.Post("me/music.listens", new 
      { 
       song = new 
       { 
        type = "music.song", 
        url = "www.example.com/blabla", 
        title = "Womanizer", 
        image = "www.example.com/blabla", 
        description = "Bu kısma açıklama gelecek", 
        musician = new 
        { 
         type = "profile", 
         title = "Britney Spears", 
         image = "www.example.com/blabla", 
         url = "www.example.com/blabla", 
         description = "Here is great song" 
        } 
       } 
      }) 

此代碼發佈以下格式的監聽活動。

「John在MySiteName上聆聽了Womanizer。」

但是,Pandora.com將該藝術家信息作爲以下格式發佈該活動。

「約翰聽着布蘭妮斯皮爾斯女人對潘多拉。」

這種格式是我的預期。它還通過顯示藝術家照片和描述來顯示藝術家姓名的工具提示。出於這個原因,我在參數中傳遞了音樂家信息。但Facebook看起來忽略了這個參數。

我該如何表示音樂監聽動作​​,因爲它是潘多拉傳送參數時會出現什麼問題?

回答

1

我沒有使用官方的.NET SDK來做你正在做的事情,但是我使用了直接的HTTP POST調用來做到這一點。 Facebook Open Graph需要歌曲和音樂家對象的「參考對象」,而不是將數據作爲參數傳遞。這些「參考對象」只是具有特殊元數據的網頁。

在我的情況下,我有一個網絡服務器,它承載的歌曲和音樂家的元數據在他們的文檔中描述的Facebook Open Graph格式。然後,我做了一個me/music.listens帖子,通過該歌曲的URL和音樂家的網址。

因此,不需要將所有原始數據作爲參數傳遞,您需要一個承載所有元數據的網站。

如果你看看這裏的文件,你會看到一些例子 https://developers.facebook.com/docs/reference/opengraph/action-type/music.listens

如果你去http://samples.ogp.me/461258627226537和查看你可以看到一個樣品元數據的歌曲的來源。

例如這裏是他們的PHP示例(對不起他們沒有.NET樣本)

/* make the API call */ 
$response = $facebook->api(
    "/me/music.listens", 
    "POST", 
    array (
     'song' => 'http://samples.ogp.me/461258627226537', 
     'musician' => 'http://samples.ogp.me/390580850990722', 
    ) 
); 
/* handle the result */ 
+0

非常感謝你爲你的努力。真的以這種方式提供元數據感覺很奇怪。爲什麼我們需要通過外部API生成HTML文檔,而不是直接傳遞參數。所以我認爲我可以直接傳遞所有參數。正如你可以看到,Facebook接受的參數,我已經發送像圖像,標題,描述等等,但我找不到一種方式來傳遞音樂家。 – Freshblood

+0

我傳遞了與參數完全相同的參數,但沒有任何更改。可能是使用自定義操作的潘多拉魔盒。 – Freshblood

相關問題