我正在使用官方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做的或传递参数有什么问题?
答案 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 */