为什么在Firebase上使用Facebook注册用户不会注册该电子邮件? - Android

时间:2017-05-06 04:19:48

标签: android facebook firebase firebase-authentication email-integration

我按照文档的所有步骤,通过Facebook注册 但是在注册时我得到了这个:

enter image description here

电子邮件的格式为( - )null

这是我的代码:

      private void initLoginWithFacebook(){
    FacebookSdk.sdkInitialize(getApplicationContext());
    callbackManager = CallbackManager.Factory.create();

    accessTokenTracker = new AccessTokenTracker() {
        @Override
        protected void onCurrentAccessTokenChanged(AccessToken oldAccessToken, AccessToken currentAccessToken) {

        }
    };


    loginButton.setReadPermissions("email", "public_profile");
    loginButton.registerCallback(callbackManager,  new FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(LoginResult loginResult) {
            handleFacebookAccessToken(loginResult.getAccessToken());



        }

        @Override
        public void onCancel() {

        }

        @Override
        public void onError(FacebookException error) {

        }
    });


    accessTokenTracker.startTracking();

    mAccessToken = AccessToken.getCurrentAccessToken();
    if(mAccessToken != null){
        Intent intent1 = new Intent(RegisterActivity.this, NavActivity.class);
        intent1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
        startActivity(intent1);

    }


}


private void handleFacebookAccessToken(AccessToken token) {
    Log.d(TAG, "handleFacebookAccessToken:" + token);


    AuthCredential credential = FacebookAuthProvider.getCredential(token.getToken());
    auth.signInWithCredential(credential)
            .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {
                    Log.d(TAG, "signInWithCredential:onComplete:" + task.isSuccessful());


                    if (!task.isSuccessful()) {
                        Log.w(TAG, "signInWithCredential", task.getException());
                        TastyToast.makeText(RegisterActivity.this, "Authentication failed.",
                                TastyToast.LENGTH_SHORT, TastyToast.ERROR).show();
                    }

                }
            });
}

到目前为止,我还没有找到解决这个问题的方法,我不知道该怎么做

1 个答案:

答案 0 :(得分:1)

这种情况正在发生,因为Facebook允许用户使用他们的电话号码而不是only注册email address。有许多用户通过添加他们的电子邮件地址来完成他们的个人资料,这就是你在那里什么也得不到的原因。

你会说,好但为什么我没有收到电话号码而不是电子邮件地址?这是因为Facebook政策。他们没有公开用户电话号码。据我所知,现在有这样的api。

希望它有所帮助。