2016-04-01 50 views
0

aracılığıyla kullanıcının gmail e-posta adresi alınamıyor Firebase'i bir BaaS olarak kullanan bir uygulama geliştiriyorum.Firebase

Google Oturum Açmayı entegre ettim ve kullanıcının adını, e-posta adresini ve profil resmini getirmek istiyorum.

Adı ve profil resmini başarıyla aldım, ancak e-posta adresini alamıyorum.

İşte
/* Setup the Google API object to allow Google+ logins */ 
     mGoogleApiClient = new GoogleApiClient.Builder(this) 
       .addConnectionCallbacks(this) 
       .addOnConnectionFailedListener(this) 
       .addApi(Plus.API) 
       .addScope(Plus.SCOPE_PLUS_LOGIN) 
       .build(); 

kullanıcı verilerinin getirmek için yapmış ne:: İşte

Google API istemcisi düzmece

public void fetchDataFromGoogle() { 

     if (authData != null) { 
      if (authData.getProvider().equals("google")) { 

       googleName = (String) authData.getProviderData().get("displayName"); 
       googleEmail = (String) authData.getProviderData().get("email"); 
       googleImage = (String) authData.getProviderData().get("profileImageURL"); 

      } 
     } else { 
      Toast.makeText(getBaseContext(), "error", Toast.LENGTH_LONG).show(); 
     } 
    } 

başarıyla adı ve profil pic getirilen gelmiş Bu kod, ancak null dönüyor e-posta adresi için.

Lütfen neyin yanlış gittiğini bana bildirin.

+0

Bo'da anahtar olarak kullanılan "e-posta" dizesini iki kez kontrol edebilir misiniz? Firebase'e kaydederken ve getirdiğinizde ...? –

+0

@DroidGEEK, o firebase'den getirilmiyor, Google'dan getiriliyor –

+0

Kişi currentPerson = Plus.PeopleApi .getCurrentPerson (mGoogleApiClient); Dize kullanıcıName = currentPerson.getDisplayName(); Dize kişiPhotoUrl = currentPerson.getImage(). GetUrl(); Dize kullanıcıGooglePlusProfile = currentPerson.getUrl(); Dize e-postası = Artı.AccountApi.getAccountName (mGoogleApiClient); bunu nasıl alıyorum? –

cevap

0

Ayrıca email kapsamını da talep etmeniz gerekir. Firebase documentation for Google authentication Gönderen: Burada

seans Tarayıcı kapandığında üzerine sona erecek Google girişi örneğidir ve biz de genişletilmiş e-posta izni talep: orada

var ref = new Firebase("https://<YOUR-FIREBASE-APP>.firebaseio.com"); 
ref.authWithOAuthPopup("google", function(error, authData) { /* Your Code */ }, { 
    remember: "sessionOnly", 
    scope: "email" 
}); 

Ayrıca bkz cevabımı: Firebase and new Google Sign-In on Android

1

Sizin durumunuzdan emin değilsiniz, ancak başka alanlara erişebildiğiniz ancak getEmail'in null değerini döndürdüğü bir durum Firebase konsolu> Kimlik Doğrulama> Oturum Açma Yöntemleri uygulamasına izin vermenizdir. Aynı e-posta adresine"

ile birden fazla hesap zaten google açtığı closed bug report var:

Eğer Auth gidin> Sign-In projenizin Yöntemleri sayfasını Firebase konsolda. var mı e-posta adresi başına bir hesap açma veya kapatma? E-posta adresi başına birden fazla hesaba izin verirseniz, , FirebaseUser için sıfırını alırsınız. getEmail()

enter image description here

Sen seçeneği kullanmak zorunda: "Aynı e-posta adresiyle birden fazla hesap engelle oluşturulmasını" veya başka FirebaseUser.getEmail() döndürecektir boş

Ps: yalnızca seçenek işaretlendikten sonra ilk giren kullanıcılar bu yöntemi başarılı bir şekilde kullanabileceklerdir