Android Facebook SDK - 分享对话框不响应取消回调

Android Facebook SDK - Share dialog does not respond to cancel callback

我在我的 android 应用程序上使用 Facebook sdk 4.0,我发现了这个问题:

-当我分享一个post时,我可以看到facebook界面,我可以post它并完美地取消它。我注册了回调,但如果我按下取消按钮,则不会调用 onCancel 回调,不会发布 post,但会调用 onSuccess 回调。但是,如果我触摸关闭按钮,一切正常。

这是我的代码:

 private void fbOnShare(){

    ShareLinkContent shareContent = new ShareLinkContent.Builder()
            .setContentTitle("The Simpson!")
            .setContentUrl(Uri.parse("http://www.foxplay.com/ar/show/6980-los-simpson?gclid=CPa-7N-y7MUCFYMSHwodNLYAKQ"))
            .build();


    this._btnShare = (ShareButton)findViewById(R.id.share_button);
    this._btnShare.setShareContent( shareContent );


    _btnShare.registerCallback( this._fbCallbackManager, new FacebookCallback<Sharer.Result>() {
        @Override
        public void onSuccess(Sharer.Result result) {

            Log.v("MyApp", "Share success!"); //Showed if I press the share or the cancel button

        }

        @Override
        public void onCancel() {
            Log.v("MyApp", "Share canceled"); //Only showed when I press the close button
        }

        @Override
        public void onError(FacebookException e) {
            Log.v("MyApp","Share error: " + e.toString());
        }

    });
}

_fbCallbackManager 是在另一个方法中创建的,该方法初始化 activity 的 onCreate 方法中的所有内容。

http://imgur.com/VbMee31

"Cancelar"按钮只响应onSuccess回调而没有post分享内容。 "close" 按钮工作正常。

private boolean hasPublishPermission()
    {
        AccessToken accessToken = AccessToken.getCurrentAccessToken();

        return accessToken != null && accessToken.getPermissions().contains("publish_actions");
    }

private void postStatusUpdate()
    {
        if(hasPublishPermission())
        {
            Log.d("PostStatus", "Ist");
            Profile profile = Profile.getCurrentProfile();
            ShareLinkContent linkContent = new ShareLinkContent.Builder()
            .setContentTitle("Hello Facebook")
            .setContentDescription( "The 'Hello Facebook' sample  showcases simple Facebook integration")
            .setContentUrl(Uri.parse("http://developers.facebook.com/docs/android"))
            .build();
            if(ShareDialog.canShow(ShareLinkContent.class))
            {
                Log.d("PostStatus", "2nd");
                ShareDialog shareDialog = new ShareDialog(instance);
                shareDialog.registerCallback(callbackManager, shareCallback);

            }
            else if (profile != null) 
            {
                Log.d("PostStatus", "3rdt");
                ShareApi.share(linkContent, shareCallback);
            } 
        }
        else
        {
            LoginManager.getInstance().logInWithPublishPermissions(this, Arrays.asList("publish_actions"));
        }

    }



private FacebookCallback<Sharer.Result> shareCallback = new FacebookCallback<Sharer.Result>()
                    {

                @Override
                public void onSuccess(Result result) {
                    // TODO Auto-generated method stub

                }

                @Override
                public void onError(FacebookException error) {
                    // TODO Auto-generated method stub

                }

                @Override
                public void onCancel() {
                    // TODO Auto-generated method stub

                }
                    };

根据 THIS 这不是错误,应该保持这种状态。

了解用户是否接受发布的唯一方法是检查结果中的 postID。

如果用户没有取消并且用户登录到您的应用程序并且它具有发布权限,您将只有一个 postID。否则它将永远为空。

是的,我知道,这很糟糕。