Получить токен на предъявителя для доступа к пожарному магазину с помощью GoogleCredentials - PullRequest
0 голосов
/ 29 мая 2019

Я хочу хранить данные в пожарном депо через вызовы rest api. Я уже проанализировал gccredentials json-файл учетной записи службы, который вы можете загрузить. Я также присвоил токену

https://www.googleapis.com/auth/datastore

Когда я передаю токен в заголовок запроса авторизации и отправляю запрос на

https://firestore.googleapis.com/v1/projects/...

Я получаю только 401 - Запрос имеет неверные учетные данные для аутентификации. Ожидаемый токен доступа OAuth 2, файл cookie для входа или другие действительные учетные данные для аутентификации ...

Я попытался получить токен от

https://www.googleapis.com/identitytoolkit/v3/relyingparty/verifyCustomToken?key=abcde 

и передать его вместо сгенерированного пользовательского токена. Это тоже не работает.

Получение идентификатора токена (GetFirebaseToken возвращает пользовательский токен из учетной записи службы json).

var token = string.Empty;

using(var http = new HttpClient())
{
    var res = await 
 http.PostAsJsonAsync("https://www.googleapis.com/identitytoolkit/v3/relyingparty/verifyCustomToken?key=abcde", new { token = await 
   GetFirebaseToken("api", new Dictionary<string, object>()) });

    var content = await res.Content.ReadAsStringAsync();
    var obj = JObject.Parse(content);
    token = obj["idToken"].Value<string>();
}

пытается залатать документ

using(var http = new HttpClient())
{
   var content = new 
   StringContent(JsonConvert.SerializeObject(appointment));
   http.DefaultRequestHeaders.Add("Authorization", $"Bearer {token}");

var res = await
http.PatchAsync("https://firestore.googleapis.com/v1/projects/myproject/databases/(default)/documents/appointments/" + appointment.Id,
                          content);

    Console.WriteLine(await res.Content.ReadAsStringAsync());
}

Как я могу получить действительный токен от остальных конечных точек для доступа к API Firestore?

...