【问题标题】:Android: OpenGraph Stories sharing in Facebook with SDK 4.0Android:使用 SDK 4.0 在 Facebook 中分享 OpenGraph 故事
【发布时间】:2015-07-23 06:06:22
【问题描述】:

我正在尝试实现在玩家解锁徽章时分享到 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

【问题讨论】:

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


    【解决方案1】:

    终于解决了我自己的问题。

    解决办法如下:

    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);
    

    我希望这对遇到同样问题的人有所帮助。

    【讨论】:

    • 没有 ShareDialog 怎么办?
    • 除了带有 setPreviewPropertyName(...) 的“徽章”之外,还有哪些其他类型?
    • 看起来 setPreviewPropertyName() 是为您指定用于 ShareOpenGraphAction.putObject() 的密钥。一个动作可以设置多个对象,因此看起来这可以让您识别要在帖子中使用的主要对象。
    • 谢谢。这真的很有帮助!
    【解决方案2】:

    查看此页面: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

    【讨论】:

      【解决方案3】:

      如果您正在寻找如何在不使用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()

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-09-18
        • 2015-06-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多