c# - Google.Apis 共享访问和刷新 token

标签 c# oauth-2.0 google-api

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

然后在服务器上,这些 token 将用于针对 Google API 执行多项操作。

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

这需要我在 Google 控制台下添加那些 Android 和 iOS 应用程序。所有 3 个(Web、Android 和 iOS)都属于同一个项目。

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

但这似乎行不通,我明白了:

Google.Apis.Auth.OAuth2.Responses.TokenResponseException:错误:“unauthorized_client”,说明:“Unauthorized”,Uri:“”

有没有办法让它成为可能?我还考虑过根据客户端向我发送 token 的内容提供 json secret 文件,但查看文件结构,它们是不同的,iOS 甚至没有 json 文件,而是一个 plist。

如有任何帮助,我们将不胜感激。

最佳答案

在 Android 或 iOS 设备上收到的访问和刷新 token 只能在此设备上使用。例如,Android OAuth 客户端在 Google 中以其包名和签名证书指纹注册到 restrict usage to your Android app。 .

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

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

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

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

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

关于c# - Google.Apis 共享访问和刷新 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51456443/

相关文章:

c# - Entity Framework 和存储库模式(IQueryable 的问题)

c# - 使用c#测试smtp邮件服务器的可用性

oauth-2.0 - 跳过用户同意屏幕 oauth2

php - 未捕获的异常 'Google_Auth_Exception',消息为 'Could not json decode the token'

api - 如何从 Gmail 的主收件箱中获取未读邮件?

c# - 如何测试节点是否包含特定字符串或字符作为其文本值?

c# - ExtractMethodCodeRefactoringProvider 遇到错误并已被禁用的原因?

ios - 无法使用 OAuth 2.0 从 Facebook 获取用户信息

python - 如何使用 Django oAuth 工具包从 Django Rest Framework 获取请求应用程序详细信息

php - 权限不足Google Analytics(分析)