Google.Apis共享访问权限和刷新令牌

Hug*_*rio 6 c# google-api oauth-2.0

到目前为止,我有一个客户端(Web应用程序)正在执行OAUTH2授权流程,然后将服务器(ASP.NET Web API)发送到访问令牌和刷新令牌.

然后在服务器上,这些令牌将用于对Google API执行多项操作.

到目前为止,一切都很完美,我们需要添加同样的OAUTH2授权流程的移动客户端.

这要求我在Googles控制台下添加这些Android和iOS应用程序.所有3(Web,Android和iOS)都属于同一个项目.

问题来了,因为在服务器上我必须使用google给我的json文件(带有clientId和secret),直到现在它与webapp使用的相同.但是现在因为我们在同一个项目中有两个新客户,所以我认为我可以使用之前使用过的相同令牌来访问Google Api,这些令牌现在也由Android和iOS发送.

但这似乎不起作用,我得到:

Google.Apis.Auth.OAuth2.Responses.TokenResponseException: Error:"unauthorized_client", Description:"Unauthorized", Uri:""

反正有没有可能吗?我还考虑提供json secretts文件,具体取决于客户端发送给我的令牌,但是查看文件结构,这些是不同的,iOS甚至没有json文件,而是plist.

任何帮助将不胜感激.

Ser*_*noy 1

在 Android 或 iOS 设备上收到的访问和刷新令牌只能在此设备上使用。例如,Android OAuth 客户端使用其包名称和签名证书指纹在 Google 中注册,以限制对 Android 应用程序的使用

您的 Web 应用程序中收到的访问和刷新令牌可以传递到您的后端服务器。

如果您希望后端服务器能够在用户离线时代表用户进行 Google API 调用,您的服务器需要有自己的访问令牌:

  • 使用Google Sign-In for AndroidGoogle Sign-In for iOS在您的 Android 和 iOS 应用程序中对用户进行身份验证;
  • 用户身份验证后请求额外的访问代码;
  • 将其传递到您的后端服务器;
  • 在服务器上交换此访问代码以获得自己的访问权限,并使用您的后端服务器客户端 ID 和客户端密钥刷新令牌。

您的后端服务器 OAuth 客户端应该具有Web application类型(您可以与您的 Web 应用程序共享 OAuth 客户端)。

详细说明可以在这里找到: