Facebook分享对话框无法打开

4
根据此链接,我已安装SDK 3.2.1并实现了uiHelper,以及FacebookDialog,如下所示:
if (FacebookDialog.canPresentShareDialog(getApplicationContext(),
            FacebookDialog.ShareDialogFeature.SHARE_DIALOG)) {
        // Publish the post using the Share Dialog
        Toast.makeText(this, "if", Toast.LENGTH_LONG).show();
        FacebookDialog shareDialog = new FacebookDialog.ShareDialogBuilder(
                this).setLink("https://developers.facebook.com/android")
                .build();
        uiHelper.trackPendingDialogCall(shareDialog.present());

    } else {
        Toast.makeText(this, "else", Toast.LENGTH_LONG).show();
        // Fallback. For example, publish the post using the Feed Dialog
        publishFeedDialog();
    }

对于publishFeedDialog(),我的建议是:

    private void publishFeedDialog() {
    Bundle params = new Bundle();
    params.putString("name", "Facebook SDK for Android");
    params.putString("caption",
            "Build great social apps and get more installs.");
    params.putString(
            "description",
            "The Facebook SDK for Android makes it easier and faster to develop Facebook integrated Android apps.");
    params.putString("link", "https://developers.facebook.com/android");
    params.putString("picture",
            "https://raw.github.com/fbsamples/ios-3.x-howtos/master/Images/iossdk_logo.png");

    WebDialog feedDialog = (new WebDialog.FeedDialogBuilder(this,
            Session.getActiveSession(), params)).setOnCompleteListener(
            new OnCompleteListener() {

                @Override
                public void onComplete(Bundle values,
                        FacebookException error) {
                    if (error == null) {
                        // When the story is posted, echo the success
                        // and the post Id.
                        final String postId = values.getString("post_id");
                        if (postId != null) {
                            Toast.makeText(getApplicationContext(),
                                    "Posted story, id: " + postId,
                                    Toast.LENGTH_SHORT).show();
                        } else {
                            // User clicked the Cancel button
                            Toast.makeText(getApplicationContext(),
                                    "Publish cancelled", Toast.LENGTH_SHORT)
                                    .show();
                        }
                    } else if (error instanceof FacebookOperationCanceledException) {
                        // User clicked the "x" button
                        Toast.makeText(getApplicationContext(),
                                "Publish cancelled", Toast.LENGTH_SHORT)
                                .show();
                    } else {
                        // Generic, ex: network error
                        Toast.makeText(getApplicationContext(),
                                "Error posting story", Toast.LENGTH_SHORT)
                                .show();
                    }
                }

            }).build();
    feedDialog.show();
}

现在,即使在手机上安装了Facebook应用程序并调用publishFeedDialog(),FacebookDialog.canPresentShareDialog始终为false。但是此后应用程序崩溃。
有什么解决方法吗?如果我的手机中有应用程序,为什么会显示正常的Facebook对话框?(我使用的是Lenevo型号,如果有帮助的话)

1
你使用的Facebook应用程序版本是什么?canPresentShareDialog只会对支持它的FB应用程序版本返回true。 - Ming Li
我刚刚检查了一下,它是2.2.1版本,而Play商店显示当前版本为24.X!我想这应该解决问题。稍后我会再联系你。谢谢。 - Sarthak Majithia
这个有效!对话框会显示我的链接和描述,但是当我点击分享按钮时,Facebook会弹出一个通知,上面写着“出了点问题,请重试”。 - Sarthak Majithia
我相信问题是因为应用程序尚未由Facebook发布给普通公众。显然,在此之前需要进行一堆审核。 我相信问题已经得到了解答,如果您能将该评论放在回答中,我将非常乐意接受。另外,当需求仅在单击共享按钮时填充状态字段时,您能告诉我登录屏幕是否必要吗? - Sarthak Majithia
1个回答

1
你需要更新Facebook应用程序才能使共享对话框正常工作。确保下载最新版本!
此外,不需要登录即可启用共享对话框。

如果您看到我之前在问题上的评论,当前问题是Facebook希望在我将应用程序开放给普通公众并使用共享对话框功能之前审核我的应用程序。为此,其中一个必需的事项是提供登录屏幕。 - Sarthak Majithia
您无需获得批准即可使用共享对话框,因为它不是提交选项之一。 - Ming Li
当我展示给用户分享对话框时,如何填充状态字段? 我知道使用.setLink()设置链接。 - Sarthak Majithia
1
您不能填充状态字段,用户必须自己输入。 - Ming Li

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接