Android应用程序:Facebook LoginManager给了我“publish_actions”权限,但应用程序永远不会通过callbackManager回调(Facebook SDK 4.18.0)?

时间:2017-01-11 00:58:41

标签: java android facebook-android-sdk access-token facebook-sdk-4.0

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

听众:

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 auth module for 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 /权限政治的未来参考,Facebook提供与您使用基本权限登录时首次提供的令牌不同的令牌。他们必须检查您的应用程序,以查看您是否仅在需要时使用权限,还要检查您是否“以防万一”这些权限,以避免对其服务器发出不必要的请求。此外,他们希望确保让用户知道发生了什么,他们必须接受发布权限,这就是为什么你必须做2个请求,首先是你第一次连接到facebook时的读取权限,以及第二个写入请求( publish_actions)权限。除非您已经要求首先阅读权限,否则您无法要求发布权限....

1 个答案:

答案 0 :(得分:1)

您是否在代码中添加了以下方法?

 @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");
}