Android 为什么在Firebase上向Facebook注册用户不会注册电子邮件安卓

Android 为什么在Firebase上向Facebook注册用户不会注册电子邮件安卓,android,facebook,firebase,firebase-authentication,email,Android,Facebook,Firebase,Firebase Authentication,Email,我遵循文档的所有步骤,通过Facebook注册 但当我注册时,我得到了: 电子邮件显示为(-)空 这是我的代码: private void initLoginWithFacebook(){ FacebookSdk.sdkInitialize(getApplicationContext()); callbackManager = CallbackManager.Factory.create(); accessTokenTracker = new Access

我遵循文档的所有步骤,通过Facebook注册 但当我注册时,我得到了:

电子邮件显示为(-)空

这是我的代码:

      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();
                    }

                }
            });
}
private void initLoginWithFacebook(){
sdkinInitialize(getApplicationContext());
callbackManager=callbackManager.Factory.create();
accessTokenTracker=新的accessTokenTracker(){
@凌驾
受保护的onCurrentAccessTokenChanged无效(AccessToken oldAccessToken、AccessToken currentAccessToken){
}
};
setReadPermissions(“电子邮件”、“公共档案”);
registerCallback(callbackManager,newfacebookcallback()){
@凌驾
成功时公共无效(LoginResult LoginResult){
handleFacebookAccessToken(loginResult.getAccessToken());
}
@凌驾
公开作废{
}
@凌驾
public void onError(facebook异常错误){
}
});
accessTokenTracker.startTracking();
mAccessToken=AccessToken.getCurrentAccessToken();
如果(mAccessToken!=null){
Intent intent1=新的Intent(RegisterActivity.this、NavActivity.class);
intent1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
星触觉(intent1);
}
}
私有无效handleFacebookAccessToken(AccessToken令牌){
Log.d(标记“handleFacebookAccessToken:”+token);
AuthCredential credential=FacebookAuthProvider.getCredential(token.getToken());
使用凭证(凭证)进行身份验证登录
.addOnCompleteListener(这是新的OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务){
Log.d(标记“signInWithCredential:onComplete:+task.isSuccessful()”);
如果(!task.issusccessful()){
w(标记“signInWithCredential”,task.getException());
TastyToast.makeText(RegisterActivity.this,“身份验证失败”,
TastyToast.LENGTH_SHORT,TastyToast.ERROR).show();
}
}
});
}

到目前为止,我还没有找到一种方法来解决这个问题,我也不知道如何解决这个问题。这种情况正在发生,因为Facebook允许用户只使用电话号码注册,而不使用电子邮件地址。有许多用户没有通过添加电子邮件地址来完成他们的个人资料,这就是你在那里什么也得不到的原因


你会问,为什么我没有收到电话号码而不是电子邮件地址?这是因为Facebook的政策。他们不会公开用户的电话号码,据我所知,他们将来也不会公开。

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


你会问,为什么我没有收到电话号码而不是电子邮件地址?这是因为Facebook的政策。他们不会公开用户的电话号码,据我所知,他们将来也不会公开。

只需先在firebase控制台中检查您的身份验证设置@Piyushtaks设置已启用只需先在firebase控制台中检查您的身份验证设置@Piyushtaks设置已启用!有帮助,泰克斯!这很有帮助。