angular - 如何从我的 Web API 访问 Google Drive API
问题描述
我有一个 Angular 应用程序和一个 android 应用程序正在使用的 Web API。场景是用户将使用 google Oauth 2.0 登录到我的 Angular 应用程序/Android 应用程序。我有一个特定的模块,用户可以在其中上传文件。我必须将文件存储在用户的谷歌驱动器中。我怎样才能做到这一点?请解释工作流程,例如从哪里获取访问令牌,如何将其传递给我的 API,如何使用它来访问驱动器 API。
解决方案
我想引导您阅读浏览器快速入门文章,该文章向您展示如何从网络浏览器访问 Drive API。
如果您希望您的第 3 方 API(您自己的)执行此访问,则需要在 Angular/Android 应用程序和自定义 API 之间共享您的应用程序配置。这是为了遵守跨客户端令牌的 Google Identity Platform 指南。
简而言之,这意味着,虽然您的前端和后端是分开的(在您看来),但用户应该作为一个实体与您的应用程序进行交互。
通过在Google Cloud Platform上设置项目(激活项目、同意屏幕、范围和库),您可以为您的应用程序创建不同的凭据。
为了安全起见,您应该定义应用程序运行所需的最小访问量。这意味着,如果您只需要读取文件(例如),则不应请求允许您删除文件的权限。
创建凭据后,您可以在前端和后端独立使用它们来访问所需的数据。您的用户将被引导通过OAuth2.0 授权流程。
在此步骤中,您将获得一个短暂的 AccessToken(具有到期日期)和一个长期的 RefreshToken(很少过期)。
当您从 API 请求信息时,您必须发送您的 AccessToken 以验证您的身份。当您的 AccessToken 过期时,您应该通过提供 RefreshToken 来请求一个新的。您应该对您的应用程序进行编码,以便在新的 AccessToken 过期时请求它。
如果您想根据前端的登录信息从后端访问数据,那么您需要在与后端通信时共享此 RefreshToken 和/或 AccessTokens。
有多种方法可以做到这一点,并且实施、优点和缺点与您的决定有很大的不同。
就个人而言,我会在后端执行所有身份验证,并仅将前端用作您信息的代理。
我希望这个解释对你有所帮助。祝你好运!
推荐阅读
- rest - REST API - 在 http 请求上发送 ID 的正确方法是什么?
- android - 无法导入firebase auth android
- angular - Angular 6 组件根据路线变化,错误:选择器“app-navbar”不匹配任何元素
- java - 如何在 Spring Boot 中使用 JSON 和 Multipart 文件处理请求
- java - Android Worker 中的 Firebase 事件监听器
- django - 未找到 uWSGI 命令
- python - 汇总各个日期的时间间隔
- laravel - Auth::attempt(['email' => Request::input('email') 不起作用?
- php - 如何根据点击的id查看数据
- authentication - Ionic 3 应用程序 - 如果用户登录,则允许导航到页面(检查一个地方,而不是每个组件)