Android 应用程序:Facebook LoginManager 给了我 "publish_actions" 权限,但应用程序从未通过 callbackManager 回调(Facebook SDK 4.18.0)?

Android App: Facebook LoginManager gives me "publish_actions" permission but app never goes through callbackManager callback( Facebook SDK 4.18.0)?

我按下自定义按钮让用户向我的 Android 应用程序(Facebook SDK 4.18.0)授予发布权限。有用。它转到提示用户向应用程序授予发布权限的 facebook 片段,然后返回到按下按钮的 activity。问题是我有 运行 调试器,它永远不会通过回调函数,我需要在用户接受后执行我需要做的事情。

听众:

permissionButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            permissionButton.startAnimation(rotation);

            JSONObject userCredentials = new JSONObject();

           //ask for facebook publishing permissions

            if(facebook_connected) {
                CallbackManager callbackManager = CallbackManager.Factory.create();

                facebookLoginWithPublishPermissions(callbackManager);
            }




        }
    });

我的自定义函数 'facebookLoginWithPublishPermissions' 旨在获得具有发布权限的令牌(我需要一个新的还是旧的,现在我已经被授予 "publish_actions" 权限这个用户,因为我已经登录并拥有 access_token 但只有使用 firebase ui 身份验证模块的基本权限 android)?如果我转到用户的 facebook 页面,我可以看到已经设置了适当的权限,因此一切正常。代码:

private void facebookLoginWithPublishPermissions(CallbackManager callbackManager) {
        LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
            @Override
            public void onSuccess(LoginResult loginResult) {
                Log.d("FACEBOOK_LOGIN_RESULT", "facebook login success");
                Log.d("LOGIN_RESULT", loginResult.getAccessToken().getToken());
            }

            @Override
            public void onCancel() {
                Log.d("FACEBOOK_LOGIN_RESULT", "facebook login canceled");

            }

            @Override
            public void onError(FacebookException exception) {
                Log.e("FACEBOOK_LOGIN_RESULT", "facebook login error");
                exception.printStackTrace();
            }
        });

        LoginManager.getInstance().logInWithPublishPermissions((Activity) mContext, Arrays.asList("publish_actions"));
    }

1-我如何获得新的令牌(如果您要求额外的权限需要更新令牌)? 2-在授予 publish_actions 权限后,如何让回调函数执行操作??

非常感谢您的帮助!

编辑:为了将来参考 Facebook API/Permission 政治,Facebook 提供了一个与您使用基本权限登录时首次提供的令牌不同的令牌。他们必须检查您的应用程序,看看您是否仅在需要时才使用这些权限,并检查您是否没有请求这些权限 "just in case" 以避免对他们的服务器发出不必要的请求。他们还想确保您让用户知道发生了什么,他们必须接受发布许可,这就是为什么您必须执行 2 个请求,第一个是第一次连接到 facebook 时的读取权限,第二个是写入请求( publish_actions) 权限。除非您已经先请求阅读权限,否则您不能请求发布权限....

您是否将以下方法添加到您的代码中?

 @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    callbackManager.onActivityResult(requestCode, resultCode, data);
    Log.d("TAG: 5. ", "I´m at onActivity result");
}