Чего ожидает Google от точки / token? - PullRequest
0 голосов
/ 28 мая 2020

Я разрабатываю приложение Google Actions и Webhook, чтобы это приложение могло взаимодействовать с сервером с учетными данными клиента. При реализации потоков OAuth и входа в Google с моим сервером я не могу найти, какой ответ ожидает сторона Google от конечной точки / token, предполагается, что он должен возвращать токен доступа, который затем будет использоваться в каждом запросе сделано из действия (..если я правильно понял эту часть ..). В настоящее время я возвращаю ContentResult с соответствующим StatusCode (я думаю) и тело json с токеном доступа, который он должен вернуть. Примерно так:

ContentResult result = null;
data.Add(@"token_type", @"Bearer");
data.Add(@"access_token", FAKE_ACCESS_TOKEN);
data.Add(@"refresh_token", FAKE_REFRESH_TOKEN);
data.Add(@"expires_in", FAKE_SECONDS_TO_EXPIRATION);

jsonResponse = data.ToString();

result = new ContentResult
{
     Content = jsonResponse,
     ContentType = "application/json"
     StatusCode = (int?)HttpStatusCode.OK
};

return result;

Документация по этой части кажется расплывчатой. Может кто-нибудь поможет мне разобраться? Заранее спасибо

Ответы [ 2 ]

1 голос
/ 29 мая 2020

[решено] Спасибо за ответы. Я решил проблему, изменив тип возвращаемого значения моего метода сообщения на «JsonResult» вместо «ContentResult».

0 голосов
/ 28 мая 2020

Предполагая, что вы используете поток кода, ваша конечная точка / token должна обрабатывать две вещи:

  • Обмен кода авторизации на токен доступа и refre sh токен
  • Замена refre sh токена на новый токен доступа

Ответы для каждого похожи, но немного отличаются (в частности, второй не должен возвращать новый refre sh токен ).

Для auth code exchange, отправляемый вам параметр grant_type будет иметь значение «authorization_code», поэтому вы вернете JSON в таком виде:

{
"token_type": "Bearer",
"access_token": "ACCESS_TOKEN",
"refresh_token": "REFRESH_TOKEN",
"expires_in": SECONDS_TO_EXPIRATION
}

для a refre sh token exchange, параметр grant_type будет иметь значение «refresh_token», и ответ будет примерно таким же, но без refre sh token:

{
"token_type": "Bearer",
"access_token": "ACCESS_TOKEN",
"expires_in": SECONDS_TO_EXPIRATION
}
...