2014-01-23 31 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

相关问题