Google возвращает ошибку 500, когда я пытаюсь получить accessToken - PullRequest
0 голосов
/ 21 ноября 2018

С этого утра я пытаюсь получить свой accessToken от GoogleAPI, но он совсем не работает, и я не знаю почему.

Я отправляю запрос на отправку по этому адресу: https://oauth2.googleapis.com/token (адрес из файла json, сгенерированного службой учетных записей, с private_key, project_id и т. Д.)

И каждый раз, когда я получаю этот http-ответ: { "error": "internal_failure" }

Мой заголовок jwt:

{
    "scope": "https://www.googleapis.com/auth/homegraph",
    "nbf": 1542816703,
    "exp": 1542820303,
    "iat": 1542816703,
    "iss": "myaccount@google.com",
    "aud": "https://oauth2.googleapis.com/token"
}

И мой звонок:

var jwtResult = ConstructJwt();
var paramaters = new Dictionary<string, string>();
paramaters.Add("grant_type", "urn:ietf:params:oauth:grant-type:jwt-bearer");
paramaters.Add("assertion", jwtResult);

var request = new HttpRequestMessage
{
    Method = HttpMethod.Post,
    RequestUri = new Uri(_serviceAccount.TokenUri),
    Content = new FormUrlEncodedContent(paramaters)
};

this._client.DefaultRequestHeaders.Accept.Clear();
this._client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/x-www-form-urlencoded"));

var response = await this._client.SendAsync(request);
var accessToken = await response.Content.ReadAsAsync<AccessTokenResponseModel>();

Если у кого-то есть идея ... Спасибо за ответы.

1 Ответ

0 голосов
/ 23 ноября 2018

Я нашел решение.Мне пришлось вставить параметр "kid" в заголовок accesstoken.

var header = new JwtHeader(signingCredentials);
header.Add("kid", _serviceAccount.PrivateKeyId);

и изменить "token_uri" из файла json, созданного AccountService."https://oauth2.googleapis.com/token" =>" https://accounts.google.com/o/oauth2/token"

Теперь все работает.

...