Я пытаюсь пройти проверку подлинности в конечной точке в облаке Google, разработанной некоторыми коллегами по работе, но получаю сообщение об ошибке:
"неверный токен, не удалось проверить токен"
Я генерирую маркер доступа OAuth, используя JSON с учетными данными. Содержимое JSON выглядит следующим образом:
{
"type": "service_account",
"project_id": "xxxxxxxxx",
"private_key_id": "xxxxxxxxxxxxx",
"private_key": "-----BEGIN PRIVATE KEY-----GiantHashHere---END PRIVATE KEY-----\n",
"client_email": "xxxxxxxx@xxxxxxxxxxx",
"client_id": "xxxxxxxxxxxxx",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "xxxxxxxxxxxx"
}
Я генерирую токен доступа с помощью библиотеки API Google для. NET, например:
FileStream F = new FileStream(@"pathToThe.json", FileMode.Open, FileAccess.Read, FileShare.Read);
Credential = await GoogleCredential.FromStream(F).CreateScoped("https://www.googleapis.com/auth/cloud-platform")
.UnderlyingCredential.GetAccessTokenForRequestAsync();
Затем я вызываю API следующим образом:
string baseUrl = Config.Config.getEndPointApiGoogleLeituraImagem();
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
client.BaseAddress = new Uri(baseUrl);
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
var json = JsonConvert.SerializeObject(dados);
HttpContent content = new StringContent(json, Encoding.UTF8, "application/json");
HttpResponseMessage response = client.PostAsync(baseUrl, content).Result;
string result = response.Content.ReadAsStringAsync().Result;
RetornoApiGoogleLeituraImagem retornoLeitura = JsonConvert.DeserializeObject<RetornoApiGoogleLeituraImagem>(result);
return retornoLeitura;
Я что-то не так делаю в вызовах?
Кроме того, люди, которые разработали API, сказали мне попробовать использовать токен идентичности вместо токена доступа, но я не могу найти, как его сгенерировать. Кроме того, вся документация, которую я нашел, подсказывает мне использовать токен доступа. Если это правильный ответ на эту проблему, как я могу создать идентификационный токен?
Если вам нужна дополнительная информация, пожалуйста, спросите. Я никогда не делал этого раньше, и я также не привык спрашивать в переполнении стека, поэтому любые советы приветствуются!