Facebook Open Graph - 具有自定义对象类型的标准操作og.likes

时间:2014-10-09 02:59:57

标签: android facebook facebook-graph-api facebook-opengraph opengraph

我试图在Android上创建一个使用Facebook SDK /应用程序的本机共享对话框的基本演示。然而,当我尝试用动作创建一个故事" og.likes"并使用我的自定义对象,它由Facebook创建为基本"对象"键入而不是我定义的自定义类型。所以不是故事说" Johnny喜欢git存储库"就像它应该的那样,它说"约翰尼喜欢一个物体"。

以下是我正在使用的代码:

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开发人员中心正确定义了我的自定义对象类型,因为我可以使用此类型与自定义操作成功共享打开的图形故事我也定义了。

此对象的类型设置正确,由打印的日志语句验证,并且打开的图形故事发布没有错误(我可以在我的Facebook墙上看到它)。但是,在对象浏览器中,对象的og:类型显示" object"而不是" git_repo",经过一段时间的记录和搜索后,我仍然无法找出原因。

任何人都能看到我做错的事吗?或者你知道是否可以使用' og.likes'通过本机共享对话框共享时的操作类型。

1 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,我无法通过共同的行动来解决这个问题" og.likes"。我最终创建了一个自定义操作("建议"在我的情况下),添加了一个对象类型("产品"在我的情况下)并添加了类型作为我的自定义操作的属性。

然后我能够创建一个新故事("建议产品")并将此故事发布到我的Feed中,并附上正确的标题(产品名称)。

它还有一点工作,特别是因为我需要找到一个好的动作名称来取代" 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);