2016-06-03 8 views
5

In der Firebase 3-Dokumentation, sagen sie Ihnen zusätzliche Möglichkeiten Daten wie diesem greifen:Firebase 3 - Zusätzliche Auth Scope Daten

Optional: Geben Sie zusätzliche OAuth 2.0 Bereiche, die Sie von der Authentifizierung anfordern möchten Anbieter. Um einen Bereich hinzuzufügen, rufen Sie addScope auf. Zum Beispiel: provider.addScope('https://www.googleapis.com/auth/plus.login');

Sobald authenicated, kann ich nicht die Daten als Teil des „user“ Objekt finden. Irgendeine Idee, wie man diese zusätzlichen Daten auswählt?

Danke,

Antwort

0

Firebase V3 wird die zusätzlichen angeforderten Daten nicht zurück, wenn zusätzliche OAuth 2.0 Bereiche angefordert werden. Sie müssen die zurückgegebenen Anmeldeinformationen abrufen (signInWithPopup und getRedirectResult stellen diese bereit) und dann mithilfe des Google accessToken im Berechtigungsnachweis die Google API aufrufen, um die zusätzlichen Daten anzufordern.

+0

Ich dachte das auch, aber wenn man das Sample im Firebase Repo sieht, sieht es so aus, als könnten sie auf alle Daten zugreifen, die sie von einem Auth-Listener erwarten. Ich versuche, es selbst neu zu erstellen, und ich bekomme keine der Felder, die sie Variablen zuweisen. Haben Sie einen Beispielcode dafür? : https://github.com/firebase/quickstart-js/blob/master/auth/google-popup.html – Brandon

+0

Die Daten, auf die sie im Beispielcode zugreifen, sind nur der aktuelle Benutzer und seine Eigenschaften, die immer verfügbar sind. Sie können auf diese über auth.currentUser. * Zugreifen. Sie können auch auf anbieterspezifische Daten zugreifen: auth.currentUser.providerData [indexOfGoogleProviderId] .email/displayName, etc. Ein anderer Benutzerverweis wird in signInWithPopup zurückgegeben, das über result.user abgerufen wird. – bojeil

0

Ich habe dies getestet und Github als Beispiel verwendet, konnte die E-Mail-Adresse des Benutzers nur abrufen, wenn die E-Mail-Adresse des Benutzers auf public auf GitHub festgelegt wurde. Die Weitergabe des Bereichs user:email hatte keine Auswirkungen, wenn die E-Mail-Adresse auf privat festgelegt wurde. z.B.

provider = new firebase.auth.GithubAuthProvider(); 
provider.addScope('user:email');