我正在开发一个Android应用程序,它应该允许用户在Facebook上分享帖子。对于统计数据,我想知道用户是否成功分享了帖子或决定取消。
问题:有没有办法检查帖子是否在没有publish_action
权限的情况下使用Facebook SDK 4.5中的ShareDialog成功共享?
ShareDialog打开Facebook应用程序共享对话框,如果共享成功,则调用回调函数中的onSuccess
方法(如果用户取消共享对话框,则调用onCancel
)。问题是当用户的设备上没有安装Facebook应用程序时。然后ShareDialog会返回到默认的浏览器进行共享,但在这种情况下,即使用户单击了取消按钮,回调函数onSuccess
方法也会始终执行!
我当前的代码如下:
FacebookCallback<Sharer.Result> shareCallback = new FacebookCallback<Sharer.Result>() {
@Override
public void onCancel() {
Log.d(LOG_TAG, "fb SHARE canceled");
}
@Override
public void onError(FacebookException error) {
Log.d(LOG_TAG, "fb SHARE error");
}
@Override
public void onSuccess(Sharer.Result result) {
String postId = result.getPostId();
if (postId != null)
{
// record successful FB share
Log.d(LOG_TAG, "fb SHARE success");
}
}
}
FacebookSdk.sdkInitialize(getApplicationContext());
callbackManager = CallbackManager.Factory.create();
shareDialog = new ShareDialog(this);
shareDialog.registerCallback(callbackManager, shareCallback);
此代码运行良好,但需要publish_actions
权限才能检查postId
。有没有其他方法可以检查共享是否成功,而不需要Facebook的额外(publish_actions
)权限(因为这太痛苦了)?
有一种方法可以解决这个问题。当你与Facebook的应用程序共享时,postId总是为空PostId当您在没有FB应用程序的情况下共享时,会接通您的onSuccess回调。解决方案是强制您的应用程序使用web提要而不是FB应用程序进行共享:
shareDialog.show(linkContent, ShareDialog.Mode.FEED);