3

我试图在Android上创建一个使用Facebook SDK /应用程序中的Native Share对话框的基本演示。然而,当我尝试用动作“og.likes”创建一个故事并使用我的自定义对象时,它被Facebook创建为基本的“对象”类型,而不是我定义的自定义类型。所以不是说“Johnny喜欢一个git仓库”,而是说它“Johnny喜欢一个物体”。Facebook Open Graph - 标准动作og.likes与自定义对象类型

这里是我使用的代码:

public void shareOpenGraphStory(Intent intent) { 
    OpenGraphObject obj = OpenGraphObject.Factory.createForPost("qtino-sharing:git_repo"); 
    obj.setType("qtino-sharing:git_repo"); 
    obj.setTitle("Testing OpenGraph Share"); 
    Log.w("FBShareActivity", "Object type is " + obj.getType()); 

    OpenGraphAction action = GraphObject.Factory.create(OpenGraphAction.class); 
    action.setType("og.likes"); 
    action.setProperty("object", obj); 

    FacebookDialog shareDialog = new FacebookDialog.OpenGraphActionDialogBuilder(mainActivity, action, "og.likes", "object") 
      .setFragment(this) 
      .build(); 
    uiHelper.trackPendingDialogCall(shareDialog.present()); 
} 

我敢肯定,我在正确的Facebook开发中心定义我的自定义对象的类型,我可以使用这种类型的成功分享的Open Graph的故事我还定义了一个自定义操作。

这个对象的类型被正确设置,如获得打印的日志语句所证实的那样,以及没有错误的开放图故事帖子(我可以在我的脸谱墙上看到它)。然而,在对象浏览器中,对象的og:类型显示“object”而不是“git_repo”,并且经过几个小时的文档和淘洗后,我仍然无法弄清楚原因。

任何人都可以看到我做错了什么吗?或者,您是否知道在通过本机共享对话框共享时,甚至可以将派生对象类型与'og.likes'操作类型一起使用。

+0

+1,这已经真正困扰我。任何人都有答案? – Matt 2014-10-09 07:03:24

回答

1

我有同样的问题,我无法用通用动作“og.likes”修复它。我最终创建了一个自定义操作(在我的案例中为“建议”),添加了一个对象类型(在我的情况下为“Product”),并将该类型添加为我的自定义操作的属性。

然后,我可以创建一个新故事(“推荐产品”),并将该故事发布到我的供稿中,并带有正确的标题(产品名称)。

这是一个更多的工作,尤其是因为我需要找到一个好的动作名称来取代“og.likes”,但我仍然觉得它更适合,然后让它说“喜欢一个对象”。

例子:

OpenGraphAction action = GraphObject.Factory.create(OpenGraphAction.class); 

action.setType("<my_app_namespace>.<my_custom_action>"); 
action.setProperty("<my_custom_action_property_name>", obj);