我按照文档的所有步骤,通过Facebook注册 但是在注册时我得到了这个:
电子邮件的格式为( - )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();
}
}
});
}
到目前为止,我还没有找到解决这个问题的方法,我不知道该怎么做
答案 0 :(得分:1)
这种情况正在发生,因为Facebook允许用户使用他们的电话号码而不是only
注册email address
。有许多用户通过添加他们的电子邮件地址来完成他们的个人资料,这就是你在那里什么也得不到的原因。
你会说,好但为什么我没有收到电话号码而不是电子邮件地址?这是因为Facebook政策。他们没有公开用户电话号码。据我所知,现在有这样的api。
希望它有所帮助。