Android Facebook SDK 检查分享是否成功
Android Facebook SDK check if share is successful
我正在开发一个 Android 应用程序,它应该允许用户在 Facebook 上分享 post。为了统计,我想知道用户是成功分享了一个post还是决定取消。
问题:有没有办法检查 post 是否在没有 publish_action
许可的情况下使用 Facebook SDK 4.5 中的 ShareDialog 成功共享?
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
权限才能检查 postId
。有没有其他方法可以检查共享是否成功,而不需要来自 Facebook 的额外 (publish_actions
) 权限(因为那太痛苦了)?
有办法解决这个问题。
当您与 Facebook 的应用程序共享时,postId 始终为 null。 PostId 当您在没有 FB 应用程序的情况下分享时,会接通您的 onSuccess 回调。
解决方案是强制您的应用程序使用网络提要而不是 FB 应用程序进行共享:
shareDialog.show(linkContent, ShareDialog.Mode.FEED);
我正在开发一个 Android 应用程序,它应该允许用户在 Facebook 上分享 post。为了统计,我想知道用户是成功分享了一个post还是决定取消。
问题:有没有办法检查 post 是否在没有 publish_action
许可的情况下使用 Facebook SDK 4.5 中的 ShareDialog 成功共享?
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
权限才能检查 postId
。有没有其他方法可以检查共享是否成功,而不需要来自 Facebook 的额外 (publish_actions
) 权限(因为那太痛苦了)?
有办法解决这个问题。 当您与 Facebook 的应用程序共享时,postId 始终为 null。 PostId 当您在没有 FB 应用程序的情况下分享时,会接通您的 onSuccess 回调。 解决方案是强制您的应用程序使用网络提要而不是 FB 应用程序进行共享:
shareDialog.show(linkContent, ShareDialog.Mode.FEED);