我可以在OAuth 2.0中使用Chrome Web Store支付吗
本文关键字:Web Chrome Store OAuth 我可以 | 更新日期: 2023-09-27 17:59:57
我已经编写了一个托管的Chrome Web应用程序,它使用.NET的Google API客户端库使用OAuth 2.0对用户进行身份验证。现在我想使用内置的Chrome Web Store payments向我们的应用程序添加支付。
查看文档,我似乎需要一个OpenID URL来检查付款。
由于我使用的是OAuth而不是OpenID身份验证,因此如何获取此UserID/OpenID URL?
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??
)
);
我想把我自己的经验留在这里,这样其他人就可以看到,这不仅仅是使用从授权请求返回到用户配置文件端点的现有Id的问题,因为这不是Chrome Payments API所需的Id。。。
简短回答
对于托管应用程序,不能仅使用OAuth2.0。托管应用程序的唯一选项是:
- 使用不推荐使用的OpenID(请参阅详细答案)
- 使用数字商品的谷歌钱包使用应用内支付
答案很长
我们仍然必须使用OpenID,但是Google为OpenID用户提供了一个迁移到OAuth2.0的路径,称为OpenIDConnect。此迁移的目的是将旧的fedId
字段映射到新的Google+用户ID。
这允许我们使用现有的OAuth 2.0进程检索OpenID标识符。
注意事项:Google.NET客户端API不支持此迁移路径。因此,必须手动或使用第三方OAuth库进行身份验证。
如何:
-
按照通常的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标识符。查询付款API需要chromewebstore
作用域
-
openid=realm=
-
然后从令牌端点交换访问令牌的代码(https://accounts.google.com/o/oauth2/token)
- 此时,您将收到标准的
access_token
、refresh_token
等变量,还将收到一个额外的id_token
变量 - 该
id_token
是包含OpenID信息的JWT编码字符串 - 解码这个JWT编码的(你可以使用这个C#JWT库)字符串会给你一个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
。这可用于与Chrome支付API进行通信
- 此时,您将收到标准的
-
仍然使用相同的OAuth凭据时,向以下URL发出签名请求:
https://www.googleapis.com/chromewebstore/v1/licenses/{appId}/{openId}
{appId}
是Chrome Web Store中应用程序的ID{openId}
是JWT响应中的openid_id
这应该能满足您的需求:
https://developers.google.com/accounts/docs/OAuth2
这是OAuth2.0的完整概述。
帮助我解决了我在网络应用程序设置方面遇到的问题,希望它也能这样做。
p.S-我不确定,但这可能正是你想要的:
https://developers.google.com/accounts/docs/OAuth2InstalledApp