2

我正在创建一个支持 Facebook 的游戏,用户可以在其中发布“朋友通行证”;玩家将能够(自动)发布,例如:“我在 MY_GAME 上超过了詹姆斯布朗”。我正在使用 Open Graph 发布我的操作。我创建了一个名为“pass”的动作和一个名为“friend”的对象。这是我的属性(其中“friendpass”是朋友参考):

通过行动

我正在尝试发布诸如“迈克尔在 MY_GAME 上传递了一个朋友”之类的操作,并标记了我传递的朋友[s?]。如何启用此功能?目前,我已经设置了一个页面(实际上只是元标记)渲染器,这是一个示例渲染页面:

 <html and other headers...>
    <meta property="fb:app_id" content="345390505541783">
    <meta property="og:type" content="smileys-game:friendpass">
    <meta id="ogurl" property="og:url" content="http://apps.canpoyrazoglu.com/smileys/pass/mehmet/sucuk">
    <meta property="og:title" content="Friend passed!">
    <meta property="og:image" content="https://s-static.ak.fbcdn.net/images/devsite/attachment_blank.png">
    <meta id="friendid" property="smileys-game:friend" content="735475141">
    <meta id="ogdesc" property="og:description" content="something comes here.">
    <rest of header and page...>

我使用调试工具来获取 Facebook 看到的内容,并且有一个指向该操作的链接作为 Graph API 调用。当我单击它时,它会返回 OAuth 错误,当我将该 URL 键入到 Graph API 资源管理器时,我会得到以下信息:

图 api 调用结果

Graph API 将我的“朋友”对象视为网页,它实际上是对 Facebook ID(我自己的 ID)的引用。如何利用该好友 ID 并在帖子中创建指向该好友的链接?

谢谢,坎。

4

2 回答 2

3

创建动作类型时,您需要使用profile对象类型(也称为连接对象类型)。在这里,我创建了一个动词来“高五”一个人:

动作类型配置

对象类型将自动配置,因为profile它是 FB 提供的内置对象类型。因此,您不必配置对象类型,除非您需要高级设置。

然后创建一个聚合:

聚合配置

然后,您的对象的 og 元标记需要使用类型profile(此示例的文件路径为 /og/profile2.html):

<head prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb# high_fiver: http://ogp.me/ns/fb/high_fiver#">
   <meta property="fb:app_id"      content="27877347222" />
   <meta property="og:url"         content="http://www.rottentomatoes.com/celebrity/tom_hanks/" />
   <meta property="og:type"        content="profile" />
   <meta property="og:title"       content="Tom Hanks" />
   <meta property="og:description" content="Tom Hanks profile on RT" />
   <meta property="og:image"       content="http://content6.flixster.com/rtactor/40/37/40376_pro.jpg" />

请注意,您可以指向任何profile,而不仅仅是 FB 配置文件。上面,我使用的是 Tom Hanks 在烂番茄上的个人资料,它使用 Open Graph 并具有 og:type profile

我发布这样的操作:

<script type="text/javascript">
 function postAction() {
   FB.api(
     '/me/high_fiver:high_five' + '?profile=http://www.plooza.com/og/profile2.html',
     'post',
     function(response) {
       if (!response || response.error) {
         alert('Error occured');
         console.log(response.error);
       } else {
         alert('Post was successful! Action ID: ' + response.id);
       }
     }
   );
 }
</script>

最后,我的应用程序的用户将在他/她的时间轴上(以“时间轴单元”)发布 OG 故事:

简介故事单元

当您单击故事单元中的“汤姆汉克斯”链接时,它会加载烂番茄个人资料。

您可以在此处尝试此演示应用程序:http: //plooza.com/og/profile2.html

于 2012-08-21T18:00:23.877 回答
1

那么“朋友”是你自己的对象类型吗?它究竟是如何定义的?

我认为对于您打算在这里执行的操作,内置对象类型Profile可能更适合您的需求 - 因为这已经创建了与 Open Graph 可识别的 Facebook 个人资料的联系。

于 2012-08-21T11:15:58.873 回答