2016-05-20 10 views
8

Po zmianie systemu autoryzacji firebase próbuję pobrać token dostępu w języku C# z serwera auth Google.Pobieranie nowego tokenu dostępu Firebase dla usług REST w .NET z auth usługi Google

Według nowej dokumentacji: https://firebase.google.com/docs/reference/rest/database/user-auth#section-api-usage

stworzyłem coś podobnego w 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 jest plik klucza pobrać z konsoli programisty Google dla konkretnego projektu Firebase.

Kod działa poprawnie, ale zwraca token nie działa z Firebase, próbowałem: https://fiery-torch-xxxx.firebaseio.com/.json?access_token=retrived token

ale otrzymują: "error" : "Permission denied."

Co robię źle? Albo czego mi brakuje?

Odpowiedz

3

mam to do pracy po włączyłem „https://www.googleapis.com/auth/userinfo.email” w zakresach

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(); 
} 

odkryłem to podczas czytania wątku grupy dyskusyjne:

Permission denied error when using Google Oauth2 access token

+0

Dziękuję bardzo pasuje! – mjpolak

1

Przeczytałem docs i podano, że parametr url powinien być "auth", a nie "access_token". Czy możesz tego spróbować?

+0

Niestety nie, odpowiedź brzmi: "Nie można zanalizować tokenu uwierzytelniania.". Wierzę, że autor jest reliktem po starym systemie autoryzacji, opisanym w starej dokumentacji: https://www.firebase.com/docs/rest/api/ – mjpolak

+0

Czy wypróbowałeś obsługę firebase? –

+0

Odpowiedzi wsparcia dla Firebase są obecnie nieco powolne. Uważam, że dzieje się tak z powodu połączenia z Google. – mjpolak

Powiązane problemy