首页 > 解决方案 > 如何从我的 Web API 访问 Google Drive API

问题描述

我有一个 Angular 应用程序和一个 android 应用程序正在使用的 Web API。场景是用户将使用 google Oauth 2.0 登录到我的 Angular 应用程序/Android 应用程序。我有一个特定的模块,用户可以在其中上传文件。我必须将文件存储在用户的谷歌驱动器中。我怎样才能做到这一点?请解释工作流程,例如从哪里获取访问令牌,如何将其传递给我的 API,如何使用它来访问驱动器 API。

标签: angulargoogle-drive-apiasp.net-core-webapiaccess-tokengoogle-oauth

解决方案


我想引导您阅读浏览器快速入门文章,该文章向您展示如何从网络浏览器访问 Drive API。

如果您希望您的第 3 方 API(您自己的)执行此访问,则需要在 Angular/Android 应用程序和自定义 API 之间共享您的应用程序配置。这是为了遵守跨客户端令牌的 Google Identity Platform 指南

简而言之,这意味着,虽然您的前端和后端是分开的(在您看来),但用户应该作为一个实体与您的应用程序进行交互。

通过在Google Cloud Platform上设置项目(激活项目、同意屏幕、范围和库),您可以为您的应用程序创建不同的凭据。

为了安全起见,您应该定义应用程序运行所需的最小访问量。这意味着,如果您只需要读取文件(例如),则不应请求允许您删除文件的权限。

创建凭据后,您可以在前端和后端独立使用它们来访问所需的数据。您的用户将被引导通过OAuth2.0 授权流程

在此步骤中,您将获得一个短暂的 AccessToken(具有到期日期)和一个长期的 RefreshToken(很少过期)。

当您从 API 请求信息时,您必须发送您的 AccessToken 以验证您的身份。当您的 AccessToken 过期时,您应该通过提供 RefreshToken 来请求一个新的。您应该对您的应用程序进行编码,以便在新的 AccessToken 过期时请求它。

如果您想根据前端的登录信息从后端访问数据,那么您需要在与后端通信时共享此 RefreshToken 和/或 AccessTokens。

有多种方法可以做到这一点,并且实施、优点和缺点与您的决定有很大的不同。

就个人而言,我会在后端执行所有身份验证,并仅将前端用作您信息的代理。

我希望这个解释对你有所帮助。祝你好运!


推荐阅读