如何在Facebook登录中修复“将应用程序后台化以从代码生成器获取代码以关闭登录Webview”?

时间:2019-02-07 14:21:17

标签: java android facebook-login facebook-android-sdk

如果我们使用默认行为在android中使用maven SDK进行登录,则它指定登录应尝试使用Facebook App登录,如果该操作不起作用,则退回到Web对话框身份验证。如果不存在facebook应用程序,则当该应用程序发送到后台且可见时,Web对话框auth会显示意外响应。恢复应用程序时,将隐藏Web对话框auth。使用2因子身份验证完成登录后,此功能会导致问题。

将LoginBehaviour更改为LoginBehavior WEB_VIEW_ONLY将显示一个不显示此行为的对话框,从而解决了问题。但是Facebook不建议这样做,因此我的应用程序ID已被Facebook停用。

  fb_login_button=findViewById(R.id.fb_login_button);

        fb_login_button.setReadPermissions(Arrays.asList(
                "public_profile","email"));
        callbackManager = CallbackManager.Factory.create();

        fb_login_button.registerCallback(callbackManager,new FacebookCallback<LoginResult>() {
            @Override
            public void onSuccess(LoginResult loginResult) {


                GraphRequest request = GraphRequest.newMeRequest(
                        loginResult.getAccessToken(),
                        new GraphRequest.GraphJSONObjectCallback() {
                            @Override
                            public void onCompleted(JSONObject object, GraphResponse response) {
                                Log.d("_completed","Login Successful");
                            }
                        });
                Bundle parameters = new Bundle();
//              parameters.putString("fields", "id,first_name,middle_name,last_name,name,email,gender,picture.type(large)");
                parameters.putString("fields", "id,first_name,middle_name,last_name,name,email,gender,picture.width(500).height(500)");
                request.setParameters(parameters);
                request.executeAsync();


            }

            @Override
            public void onCancel() {
                Log.e("_error","Face->"+"cancelled");
            }

            @Override
            public void onError(FacebookException error) {
                Log.e("_error","Face->"+error);
            }

        });
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        callbackManager.onActivityResult(requestCode, resultCode, data);
        super.onActivityResult(requestCode, resultCode, data);
    }
}

 implementation 'com.facebook.android:facebook-login:[4,5)'

有人有什么解决办法的想法吗?感谢所有帮助。

0 个答案:

没有答案