在Android中无摩擦的Facebook分享

时间:2015-11-18 14:07:28

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

用户每次完成关卡时都必须点击共享对话框中的帖子按钮。我需要为用户消除这种困难。截至目前,我已经创建了一个自定义故事,并要求用户每次都点击发布。

问题:

  1. 我听说过Open图形故事的无摩擦FB帖子。在android中有可能吗?

  2. 如果在android中有可用的无摩擦FB帖子,请指出我在下面粘贴的代码中的更正。

  3. 如果android中有无摩擦FB帖子,我需要从用户那里得到什么许可?

  4. 代码

        ShareOpenGraphObject object = new ShareOpenGraphObject.Builder()
                .putString("og:type", "puzzlegameballmania:level")
                .putString("og:title", "Cleared Level-1 !!!")
                .putString("og:image", "http://ixxxxwsz.jpg")
                .putString("og:url", "https://play.google.com/store/apps/details?id=com.gamxxxxx.android")
                .putString("og:description", "Color of the balls matters more. Lets break the goal and go higher !")
                .putString("puzzlegameballmania:level:title", "LEVEL 1")
                .build();
    
        // Create an action
        ShareOpenGraphAction action = new ShareOpenGraphAction.Builder()
                .setActionType("puzzlegameballmania:clear")
                .putObject("puzzlegameballmania:level", object)
                .build();
    
        // Create the content
        ShareOpenGraphContent content = new ShareOpenGraphContent.Builder()
                .setPreviewPropertyName("puzzlegameballmania:level")
                .setAction(action) 
                .build();
    
        ShareDialog.show(AndroidLauncher.this, content);
    

1 个答案:

答案 0 :(得分:1)

  1. 请勿使用ShareDialog,而是使用ShareApi,此处有sample code
  2. publish_actions权限是必需的,您的应用将由Facebook审核
  3. 您可能还想阅读此Facebook developer post,这似乎不鼓励隐式/自动发布。如果未审核该应用,则会显示对用户的警告。

    修改

    在使用ShareApi之前,请先检查应用是否具有所需权限:

    private boolean hasPublishPermission() {
        AccessToken accessToken = AccessToken.getCurrentAccessToken();
        return accessToken != null && accessToken.getPermissions().contains("publish_actions");
    }
    

    如果没有,请执行以下代码以请求权限:

    LoginManager.getInstance().logInWithPublishPermissions(
              this, Arrays.asList("publish_actions"));
    

    如果您在未经适当许可的情况下使用 ShareApi ,则会失败,并且会调用onError(FacebookException)方法,假设您已将FacebookCallback传递给ShareApi