Проблема в Firebase Facebook аутентификации после успешного входа с Facebook в Android - PullRequest
0 голосов
/ 10 декабря 2018

У меня проблема с аутентификацией при fireback.Вход в Facebook работает нормально для каждого пользователя Facebook.После входа в Facebook мы используем токен Facebook для авторизации в Firebase.Я попытался войти с учетной записью разработчика или тестовой учетной записью, созданной на учетной записи разработчика Facebook, после чего мы можем войти также с помощью FB-аутентификации firebase.Но для другой учетной записи fb аутентификация firebase не работает (логин fb работает нормально для всех учетных записей fb). Проблема возникает только после входа в систему fb.Для других учетных записей fb (кроме учетной записи разработчика и тестовой учетной записи, созданной в приложении для разработчиков) после успешного входа в систему fb, когда код пытается аутентифицировать firebace, я не получаю никаких сообщений об ошибках в журналах и исключении try catch.Пожалуйста, помогите мне решить эту проблему.

private void fbLoginRequest(CallbackManager callbackManager) {
    loginmanager = LoginManager.getInstance();
    AccessToken accessToken = AccessToken.getCurrentAccessToken();
    if (accessToken != null) {
        loginmanager.logOut();
    }

    loginmanager.logInWithReadPermissions(activity,Arrays.asList("public_profile","email"));
    loginmanager.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(final LoginResult loginResult) {
            GraphRequest request = GraphRequest.newMeRequest(loginResult.getAccessToken(),new GraphRequest.GraphJSONObjectCallback() {
                @Override
                public void onCompleted(JSONObject object,GraphResponse response) {

                    UserNormal userDetail = new UserNormal();
                    try {
                        email = object.getString("email");
                        id = object.getString("id");
                        name = object.getString("name");
                        first_name = object.getString("first_name");
                        last_name = object.getString("last_name");
                        JSONObject picture = object.getJSONObject("picture");
                        final JSONObject data = picture.getJSONObject("data");
                        profile_img_url = data.getString("url");
                    }
                    catch (JSONException e) {
                        e.printStackTrace();

                    }
                    userDetail.setFirstName(first_name);
                    userDetail.setLastName(last_name);
                    userDetail.setCustomer_email(email);
                    userDetail.setCustomer_name(name);
                    userDetail.setCustomer_photo(profile_img_url);

            logInWithFbOnFireBase(loginResult.getAccessToken(),userDetail);
                    alertDialog.dismiss();
                }
            });

            Bundle parameters = new Bundle();
            parameters.putString("fields","id,name,email,first_name,last_name,picture.width(300).height(300)");
            request.setParameters(parameters);
            request.executeAsync();
        }

        @Override
        public void onCancel() {
            alertDialog.dismiss();
            HomeActivity.getInstance().viewPager.setCurrentItem(0);
        }

        @Override
        public void onError(FacebookException error) {
        }
    });

}


public void logInWithFbOnFireBase(AccessToken token,final UserNormal userDetail) {


    WebServices.getInstance().handleFbAccessTocken(activity,token,new FbAccessTokenHandler() {
        @Override
        public void OnSuccess(Task<AuthResult> task) {


        }

        @Override
        public void OnFail(String message) {
            view.showFeedbackMessage(message);
        }
    });
}
    public void handleFbAccessTocken(Activity activity,AccessToken token, final FbAccessTokenHandler handler) {
    AuthCredential credential = FacebookAuthProvider.getCredential(token.getToken());
    BorideApplication.mAuth.signInWithCredential(credential).addOnCompleteListener(activity, new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(Task<AuthResult> task) {
                    if (task.isSuccessful()) {
                        handler.OnSuccess(task);
                    }
                    else {
                        handler.OnFail(task.getException().getMessage());
                    }
                }
            });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...