我正在开发一个Android应用程序,该应用程序应允许用户在Facebook上分享帖子。为了进行统计,我想知道用户是否已成功共享帖子或决定取消。
问题:有没有一种方法可以检查是否未经许可使用Facebook SDK 4.5中的ShareDialog成功共享了帖子publish_action
?
ShareDialog打开Facebook App共享对话框,如果共享成功,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
获得check的许可postId
。是否有其他方法可以检查共享是否成功,而又不需要publish_actions
Facebook的其他()权限(因为这太痛苦了)?
有一个解决此问题的方法。事情是帖子ID总是空当你与Facebook的应用程序共享。在没有FB应用的情况下共享时,PostId会进入onSuccess回调。解决方案是强制您的应用程序使用Web feed而不是FB app进行共享:
shareDialog.show(linkContent, ShareDialog.Mode.FEED);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句