2016-05-20 23 views
8

Dopo una modifica del sistema di autorizzazione di Firebase, sto cercando di recuperare il token di accesso in C# da google auth server.Recupero del nuovo token di accesso di Firebase per i servizi REST in .NET dal servizio di autenticazione di Google

Secondo nuova documentazione: https://firebase.google.com/docs/reference/rest/database/user-auth#section-api-usage

ho creato qualcosa di simile in C#:

using Google.Apis.Auth.OAuth2; 
[...] 
async Task<string> GetToken() 
{ 
    GoogleCredential credential; 
    using (var stream = new System.IO.FileStream("gckey.json", 
     System.IO.FileMode.Open, System.IO.FileAccess.Read)) 
    { 
     credential = GoogleCredential.FromStream(stream).CreateScoped(
      new string[] { "https://www.googleapis.com/auth/firebase.database" } 
      ); 
    } 

    ITokenAccess c = credential as ITokenAccess; 
    return await c.GetAccessTokenForRequestAsync(); 
} 

gckey.json è file chiave scaricato da Google console Developer per progetti specifici Firebase.

codice funziona bene, ma restituisce token che non funziona con Firebase, ho provato: https://fiery-torch-xxxx.firebaseio.com/.json?access_token=retrived token

ma riceverò: "error" : "Permission denied."

Che cosa sto facendo di sbagliato? O cosa mi manca?

risposta

3

ho ottenuto questo al lavoro dopo ho incluso "https://www.googleapis.com/auth/userinfo.email" in ambiti

using Google.Apis.Auth.OAuth2; 
[...] 
async Task<string> GetToken() 
{ 
    GoogleCredential credential; 
    using (var stream = new System.IO.FileStream("gckey.json", 
     System.IO.FileMode.Open, System.IO.FileAccess.Read)) 
    { 
     credential = GoogleCredential.FromStream(stream).CreateScoped(
      new string[] { 
       "https://www.googleapis.com/auth/firebase.database", 
       "https://www.googleapis.com/auth/userinfo.email" } 
      ); 
    } 

    ITokenAccess c = credential as ITokenAccess; 
    return await c.GetAccessTokenForRequestAsync(); 
} 

ho scoperto questo durante la lettura del thread gruppo Google:

Permission denied error when using Google Oauth2 access token

+0

Grazie mille! – mjpolak

1

Ho letto il docs e si afferma che il parametro url deve essere "auth" non "access_token". Puoi provarlo?

+0

Purtroppo, la risposta è: "Impossibile analizzare il token di autenticazione.". Credo che auth sia relic dopo il vecchio sistema di autorizzazione, descritto nella vecchia documentazione: https://www.firebase.com/docs/rest/api/ – mjpolak

+0

Hai provato il supporto Firebase? –

+0

Le risposte al supporto di Firebase sono un po 'lente al momento. Credo che sia a causa della fusione con google. – mjpolak

Problemi correlati