2017-02-21 40 views
1

Я разрабатываю приложение для Android с Firebase. Я аутентифицирую пользователя с помощью аккаунтов электронной почты, Facebook, Twitter. Проблема в том, что у меня есть разрешения для Facebook и Twitter получать электронную почту.Firebase Facebook Twitter Провайдеры getEmail null

Я могу получить электронную почту и в консоли Firebase, я могу видеть связанные письма для Facebook и Twitter. Но в приложении я не могу получить электронное письмо с аккаунтами Facebook и Twitter. Я просмотрел все данные пользователя.

Как следует:

user = mAuth.getCurrentUser(); 
//First provider is firebase all the time 
user.getProviderData().get(1).getProviderId() = "twitter.com" 
user.getProviderData().get(1).getEmail() = null 
user.getEmail() = null 

ответ

2

Я нашел проблему Firebase имеет опцию "одной учетной записи на адрес электронной почты". Если он отключен, пользователь (который будет связан с другими учетными записями) не будет получать информацию от самих поставщиков. Все данные поставщика хранятся у поставщиков. Но если вы включаете «Одна учетная запись на адрес электронной почты», она записывает соответствующую информацию о пользователе, а user.getEmail() возвращает электронное письмо от поставщика.

0

Это правильный путь Firebase

FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser(); 

if (user != null) { 
    //this will iterate through all providers 
    user.providerData.forEach(function (profile) { 

    console.log("Sign-in provider: "+profile.providerId); 
    console.log(" Provider-specific UID: "+profile.uid); 
    console.log(" Name: "+profile.displayName); 
    console.log(" Email: "+profile.email); 
    console.log(" Photo URL: "+profile.photoURL); 

    //this will get the details of twitter. check "google.com" for google.. 
    if(profile.providerId == "twitter.com"){ 
     String twitterUid = profile.uid; 
     String twitterEmail = profile.email; 
     etc... 
    } 

    }); 

} 
+0

Я уже делаю это. Я только что рассказал о связанной части. – starrystar

+0

Затем попробуйте распечатать объект пользователя на консоли и проверить данные. – Hareesh

+0

проверить обновленный код .. – Hareesh