Android Facebook SDK 4.0.0共享回调不';我不能正常工作

Android Facebook SDK 4.0.0共享回调不';我不能正常工作,android,facebook-sdk-4.0,Android,Facebook Sdk 4.0,我使用以下代码在facebook上共享链接。当用户在共享对话框界面上单击“取消”时,有时会调用onSuccess()回调方法,而不是onCancel()。还有获取post id为空。请帮助我出了什么问题 ShareButton btn; CallbackManager callbackManager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceSt

我使用以下代码在facebook上共享链接。当用户在共享对话框界面上单击“取消”时,有时会调用onSuccess()回调方法,而不是onCancel()。还有获取post id为空。请帮助我出了什么问题

ShareButton btn;
CallbackManager callbackManager;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    FacebookSdk.sdkInitialize(this);
    callbackManager = CallbackManager.Factory.create();
    setContentView(R.layout.activity_share);

    btn = (ShareButton) findViewById(R.id.btn_share);

    btn.registerCallback(callbackManager, new FacebookCallback<Sharer.Result>() {
        @Override
        public void onSuccess(Sharer.Result result) {
            Log.e("Tag","Successfully posted");
            Log.e("Post id",result.getPostId());
        }

        @Override
        public void onCancel() {

            Log.e("Tag","Canceled by user");

        }

        @Override
        public void onError(FacebookException error) {

            Log.e("Tag",error.getLocalizedMessage());
        }
    });
    ShareLinkContent content = new ShareLinkContent.Builder()
            .setContentUrl(Uri.parse("My Custom URL"))
            .setContentTitle("Test")
            .build();

    btn.setShareContent(content);

}

@Override
protected void onActivityResult(final int requestCode, final int resultCode, final Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    callbackManager.onActivityResult(requestCode, resultCode, data);
}
ShareButton btn;
CallbackManager CallbackManager;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
FacebookSdk.sdk初始化(此);
callbackManager=callbackManager.Factory.create();
setContentView(R.layout.activity_share);
btn=(ShareButton)findViewById(R.id.btn\u share);
btn.registerCallback(callbackManager,new FacebookCallback()){
@凌驾
成功时公开作废(共享结果){
Log.e(“标记”,“成功发布”);
Log.e(“Post id”,result.getPostId());
}
@凌驾
公开作废{
Log.e(“标签”、“用户取消”);
}
@凌驾
public void onError(facebook异常错误){
Log.e(“Tag”,error.getLocalizedMessage());
}
});
ShareLinkContent=新的ShareLinkContent.Builder()
.setContentUrl(Uri.parse(“我的自定义URL”))
.setContentTitle(“测试”)
.build();
btn.设置共享内容(内容);
}
@凌驾
受保护的void onActivityResult(最终int请求代码、最终int结果代码、最终意图数据){
super.onActivityResult(请求代码、结果代码、数据);
callbackManager.onActivityResult(请求代码、结果代码、数据);
}

好吧,也许我迟到了,但几周前我也遇到了同样的问题。 我注意到,如果在web base Share对话框中按Cancel,则会调用onSuccess()方法,但Share.Result对象包含空postId,因此您可以通过检查Share.Result响应来控制用户何时按Cancel或Share


我注意到的另一件事是,如果您与安装的本机应用程序共享内容,postId字段始终为空。。。因此,您必须检查用户是否安装了应用程序,以检查postId字段。

我也遇到了同样的问题。你能解决这个问题吗?我也面临同样的问题。我也有同样的问题,在任何地方都找不到解决办法。看起来Facebook SDK for Android中有一个bug,或者文档中缺少一些内容。我尝试使用
PostId
来识别成功的post操作,但正如您所说,当安装本机应用程序时,
PostId
始终为空。在这种情况下,您是否有检测取消的解决方案?只需检查用户是否安装了Facebook软件包以执行一种或其他逻辑。当用户安装了Facebook本机应用程序并通过单击对话框左上角的后退箭头按钮取消共享时,此解决方案将失败,在这种情况下,将再次调用onSuccess,postId为空。