发布音乐通过.NET SDK在Facebook上收听动作

时间:2014-01-23 22:31:30

标签: c# .net facebook facebook-graph-api

我正在使用官方Facebook .NET SDK发布music.listens动作,代码如下。

            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"
                    }
                }
            })

此代码将listen活动发布为以下格式。

  

“John在MySiteName上听了Womanizer。”

但Pandora.com以艺术家信息的形式发布该活动,格式如下。

  

“John在Pandora上听布兰妮斯皮尔斯的好色之歌。”

这种格式是我所期望的。它还通过显示艺术家照片和描述来显示艺术家姓名上的工具提示。出于这个原因,我在参数中传递了音乐家信息但Facebook看起来忽略了这个参数。

我如何表示音乐听动作,因为它是Pandora做的或传递参数有什么问题?

1 个答案:

答案 0 :(得分:1)

我没有使用官方的.NET SDK来做你正在做的事情,但是我使用了直接的HTTP POST调用来做到这一点。 Facebook Open Graph需要歌曲和音乐家对象的“参考对象”,而不是将数据作为参数传递。这些“参考对象”只是具有特殊元数据的网页。

在我的情况下,我有一个Web服务器,以Facebook Open Graph格式托管歌曲和音乐家元数据,如文档中所述。然后我做了一个me / music.listens帖子,传递了歌曲的网址和音乐家的网址。

因此,您不需要将所有原始数据作为参数传递,而是需要一个托管所有元数据的网站。

如果你看一下这里的文档,你会看到一些例子 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 */