Facebook 分享对话框未打开
Posted
技术标签:
【中文标题】Facebook 分享对话框未打开【英文标题】:Facebook Share Dialog is not opening 【发布时间】:2015-01-07 09:52:55 【问题描述】:根据link here,我已经安装了 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();
现在FacebookDialog.canPresentShareDialog
总是会出错,即使手机中安装了 Fb 应用程序,然后调用了 publishFeedDialog()。但是在此之后应用程序崩溃了。
解决办法是什么?当应用程序在我的手机中时,为什么会显示正常的 Facebook 对话框? (我正在使用联想模型,如果有帮助的话)
【问题讨论】:
你有什么版本的 Facebook 应用程序? canPresentShareDialog 只会对支持它的 FB 应用程序版本返回 true。 我刚查了一下,是2.2.1,playstore说当前版本是24.X!我想这应该可以解决问题。让我稍后再回复你。谢谢。This works!
对话框会显示我的链接和描述,BUT
当我点击分享按钮时,会出现一个 Facebook 通知说 "Something went wrong, please try again"
我认为问题在于该应用程序没有由 facebook 向公众发布。显然,在此之前有一堆评论可以完成。我相信这个问题已经得到解答,如果你愿意把这个评论放在答案中,我很乐意接受这一点。另外,你能告诉我登录屏幕是否是必要的,即使要求只是在单击共享按钮时填充状态字段。
【参考方案1】:
您需要更新的 FB 应用程序才能使共享对话框正常工作。确保下载最新的!
另外,不,您无需登录即可启用共享对话框。
【讨论】:
如果您看到我之前对该问题的评论,当前的问题是 Facebook 希望在我向公众开放并使用该共享对话框功能之前审核我的应用程序。为此,需要做的事情之一是提供登录屏幕。 您无需批准即可使用共享对话框,它不是提交中的选项之一。 当我向用户显示共享对话框时,如何填充状态字段?我知道链接是使用 .setLink() 设置的 您不能填充状态字段,用户必须自己输入。以上是关于Facebook 分享对话框未打开的主要内容,如果未能解决你的问题,请参考以下文章