2

当玩家解锁徽章时,我正在尝试实现分享到 Facebook 的成就。在 facebook 开发者控制台中使用对象浏览器创建了一个对象。我制作了动作类型和对象类型,并制作了一个自定义故事。现在我被困在试图将这个故事分享到 Facebook 上。facebook 提供的文档是不充分的。连facebook给出的示例代码都使用v3.x

facebook给出的示例代码如下。找不到任何好的文档。

对象代码

Bundle params = new Bundle();
Request request = new Request(
    Session.getActiveSession(),
    "me/objects/enguru_app:badge",
    params,
    HttpMethod.POST
);
Response response = request.executeAndWait();
// handle the response

行动守则

Bundle params = new Bundle();
params.putString("badge", "http://samples.ogp.me/1114467558579559");
Request request = new Request(
    Session.getActiveSession(),
    "me/enguru_app:unlocked",
    params,
    HttpMethod.POST
);
Response response = request.executeAndWait();
// handle the response
4

3 回答 3

6

终于弄清楚了我自己的问题。

这是解决方案:

ShareOpenGraphObject object = new ShareOpenGraphObject.Builder()
            .putString("og:type", "enguru_app:badge")
            .putString("og:title", "Unlocked Newbie Badge")
            .putString("og:url","xxxx")
            .putString("og:image","xxx")
            .putString("game:points", "10")
            .putString("fb:app_id", "xxx")
            .putString("og:description",
                    "We are rocking. Come and Play with us").build();
    // Create an action
    ShareOpenGraphAction action = new ShareOpenGraphAction.Builder()
            .setActionType("enguru_app:unlocked")
            .putObject("badge", object).build();
    // Create the content
    ShareOpenGraphContent content = new ShareOpenGraphContent.Builder()
            .setPreviewPropertyName("badge").setAction(action)
            .build();

    ShareDialog.show(Profile.this, content);

我希望这会帮助遇到同样问题的人。

于 2015-05-13T11:46:10.263 回答
0

请参阅此页面:https ://developers.facebook.com/docs/sharing/android特别是 ShareOpenGraphObject 和 ShareOpenGraphAction。

您也可以通过 Scrumptious 进行调试:https ://github.com/facebook/facebook-android-sdk/blob/master/samples/Scrumptious/src/com/facebook/scrumptious/SelectionFragment.java#L365

于 2015-05-12T17:13:00.497 回答
0

如果您正在寻找如何在不使用的情况下共享ShareDialog

ShareApi shareApi = new ShareApi(content);
shareApi.share(new FacebookCallback<Sharer.Result>() {
        @Override
        public void onSuccess(Sharer.Result result) {

        }

        @Override
        public void onCancel() {

        }

        @Override
        public void onError(FacebookException error) {

        }
});

你也可能想检查shareApi.canShare()

于 2017-03-29T10:52:40.107 回答