Подтвердить что ты не робот

Могу ли я использовать платежи в интернет-магазине Chrome с помощью OAuth 2.0

Я написал размещенное веб-приложение Chrome, которое проверяет подлинность пользователя с помощью OAuth 2.0 с помощью клиентской библиотеки API Google для .NET. Теперь я хочу добавить платежи в наше приложение, используя встроенные платежи в интернет-магазине Chrome.

Посмотрев документацию, мне кажется, что мне нужен URL OpenID для проверки оплаты.

Как я могу получить этот URL UserID/OpenID, поскольку я использую OAuth вместо проверки OpenID?

var service = new Google.Apis.Oauth2.v2.Oauth2Service(
    new BaseClientService.Initializer
    {
        HttpClientInitializer = userCredential,
        ApplicationName = "My App Name",
    }
);
HttpResponseMessage message = await service.HttpClient.GetAsync(
    string.Format("https://www.googleapis.com/chromewebstore/v1/licenses/{0}/{1}", 
        appId,
        fedId // Where do I get this??
    )
);
4b9b3361

Ответ 1

Я хотел оставить свой собственный опыт здесь, чтобы другие могли видеть, что это не просто вопрос использования существующего идентификатора, возвращаемого с авторизованного запроса конечной точке профиля пользователя, поскольку это не идентификатор, требуемый API платежей Chrome....

Короткий ответ

Невозможно использовать только OAuth2.0 для размещенного приложения. Единственными опциями для размещенного приложения являются:

  • Использовать устаревший OpenID (см. подробный ответ)
  • Использовать платежи в приложениях с помощью Google Кошелька для цифровых товаров.

Длинный ответ

Нам еще нужно использовать OpenID, однако Google предоставил путь миграции для пользователей OpenID к OAuth2.0 под названием OpenID Connect. Цель этой миграции - сопоставить старое поле fedId с новыми идентификаторами пользователя Google+.

Это позволяет нам получить идентификатор OpenID с использованием существующего процесса OAuth 2.0.

Предостережение. API-интерфейсы Google.NET Client не поддерживают этот путь миграции. Поэтому аутентификация должна выполняться вручную или с помощью сторонней библиотеки OAuth.

Howto:

  • Как обычно, поток OAuth направляет пользователя к конечной точке Authenticate (https://accounts.google.com/o/oauth2/auth) со следующими переменными:

    • openid.realm = http://localhost ** Требуется, где http://localhost соответствует вашей переменной redirect_uri
    • scope = профиль openid https://www.googleapis.com/auth/chromewebstore.readonly ** Области openid и profile требуются в чтобы получить идентификатор OpenID. Область запроса chromewebstore требуется для запроса API платежей.
  • Затем замените код для токена доступа с конечной точки Token (https://accounts.google.com/o/oauth2/token)

    • В этот момент вы получите стандартные переменные access_token, refresh_token и т.д., но также дополнительную переменную id_token.
    • Это id_token представляет собой строку в формате JWT, содержащую информацию OpenID.
    • Декодирование этого JWT-кодированного (вы можете использовать эту С# JWT Library) строка даст вам строку JSON в следующем формате:

    { "aud": "<googleuserid>.apps.googleusercontent.com", "at_hash": "<hashcode>", "iss": "accounts.google.com", "openid_id": "<!! The fedId we require !!>", "exp": <id>, "azp": "<googleuserid>.apps.googleusercontent.com", "iat": <id>, "sub": "<googleuserid>" }

    • На этом этапе мы наконец нашли то, что искали, openid_id. Это можно использовать для связи с API платежей Chrome.
  • При использовании тех же учетных данных OAuth сделайте подписанный запрос по следующему URL-адресу:

    • https://www.googleapis.com/chromewebstore/v1/licenses/{appId}/{openId}
    • {appId} - это идентификатор вашего приложения в интернет-магазине Chrome.
    • {openId} является openid_id из ответа JWT

Ответ 2

Это должно дать вам то, что вам нужно:

https://developers.google.com/accounts/docs/OAuth2

Его полный обзор OAuth2.0.

Помог мне с проблемой, с которой я столкнулся с настройкой webapp, надеюсь, что он сможет сделать то же самое.

P.S - Я не уверен, но это может быть именно то, что вы ищете:

https://developers.google.com/accounts/docs/OAuth2InstalledApp