oauth - 有什么方法可以结合客户端和服务器端 Google API 身份验证?

标签 oauth google-api

目前我正在实现一个前端在移动设备上,后端在服务器上的 Ionic 应用程序。 (因此设备和服务器之间存在连接延迟)并且我的应用程序通过连接到 Google API 来使用 Google 服务(如 Gmail、日历等)。

  • 目前的架构是:

    设备 <==> 服务器 <==> Google API

    这是使用 OAuth 2.0 服务器端身份验证。它可以工作,但是连接延迟太长了,感觉就像回到了我们有拨号互联网连接的时候。
  • 我尝试使用 OAuth 2.0 客户端身份验证,即:

    设备 <==> Google API

    这更快,但有两个问题:
  • 即使 Ionic 将前端代码打包到应用程序中,我仍然担心“前端的所有内容对每个人都可见”的规则仍然存在。 (没有找到证据证明或反对这个假设)
  • Google API OAuth 2.0 仅向客户端身份验证发出流,并且流经常过期,我不希望用户一次又一次地授予权限。

  • 所以,我想知道是否可以执行以下操作:
  • 使用服务器端身份验证来存储 key /凭据(我使用 Django 作为后端,即 Python),前端从服务器获取 key /凭据并使用 JavaScript 代码继续 Google 服务。
  • 最佳答案

    我知道聚会迟到了,但我现在正在经历这个。我认为有两种方法可以设置它,但都不是完美的。

  • 使用服务器端流程来授权您在服务器或客户端上需要的所有范围。获得 token 后,将其传递给您的客户端。不利的一面是客户端现在有一个 token ,可以访问比需要更多的 API。
  • 为客户端和服务器创建单独的授权流程。这意味着用户有 2 个授权提示,这是不好的。这种方法的好处是您可以确保客户端的范围有限,但服务器仍然可以处理更大的任务(移动驱动器文件、发送电子邮件等)

  • 在我的例子中,客户端只需要对 Contacts API 的读取权限,而服务器需要完全的 Drive 权限。

    如果有人找到一种组合方法,只需要一次授权,但客户端和服务器有不同的范围,那将是理想的情况。

    关于oauth - 有什么方法可以结合客户端和服务器端 Google API 身份验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38383718/

    相关文章:

    iphone - Facebook SDK 2.0 的 Facebook OAuth 登录问题

    Paypal 获取所有客户的交易

    ios - GTMOAuthViewControllerTouch 和 LinkedIn 注销

    PHP 从数据库中解码 JSON 字符串返回 NULL

    ios - 谷歌登录服务器授权码 nil iOS?

    oauth - 如何使用 Katana OAuth Bearer Tokens 处理长期存在的 token

    django - Piston 准备好接受 OAuth 了吗?

    android - 使用 Google API 尝试在 Android 中创建测试时出错

    ios - GPPSignIn 生日属性缺失

    Python,speech_recognition 工具无法识别 .wav 文件