Google api 如何在没有用户干预的情况下授权应用程序(web或已安装)?
假设我有一个web应用程序(“mydriveapp”),需要在后台服务中访问驱动器文件。它将拥有它正在访问的文件,或者在所有者共享文档的Google帐户中运行 我知道我的应用程序需要一个刷新令牌,但我不想编写代码来获得它,因为我只会做一次Google api 如何在没有用户干预的情况下授权应用程序(web或已安装)?,google-api,google-drive-api,google-oauth,gmail-api,Google Api,Google Drive Api,Google Oauth,Gmail Api,假设我有一个web应用程序(“mydriveapp”),需要在后台服务中访问驱动器文件。它将拥有它正在访问的文件,或者在所有者共享文档的Google帐户中运行 我知道我的应用程序需要一个刷新令牌,但我不想编写代码来获得它,因为我只会做一次 NB。这不是使用服务帐户。该应用程序将在传统的谷歌帐户下运行。在某些情况下,服务帐户是一种有效的方法。但是,使用Oauth Playerly模拟应用程序的技术可以节省大量的冗余工作,并且适用于不支持共享到服务帐户的任何API。这可以通过以下方式使用Oauth
NB。这不是使用服务帐户。该应用程序将在传统的谷歌帐户下运行。在某些情况下,服务帐户是一种有效的方法。但是,使用Oauth Playerly模拟应用程序的技术可以节省大量的冗余工作,并且适用于不支持共享到服务帐户的任何API。这可以通过以下方式使用Oauth 2 Playerly完成: 步骤:-
Web应用程序
- OAuth流:服务器端
- 访问类型:脱机
- 使用您自己的OAuth凭据:勾选
- 客户端Id和客户端机密:从步骤5开始
让我为pinoyyid的优秀答案添加一条替代路线(这对我来说不起作用-弹出重定向错误) 除了使用OAuthAPI,您还可以直接使用HTTPRESTAPI。所以皮诺伊德回答的不同之处在于,我们会在本地做一些事情。按照pinoyyid回答中的步骤1-3进行操作。我会引用他们的话:
授权重定向URI: 截图(德语): 确保通过下面的蓝色按钮实际保存更改 现在,您可能需要使用GUI来构建HTTP请求。我用过,但你可以用卷发或普通卷发。我推荐失眠,因为它可以让你很容易地通过同意屏幕 使用以下参数生成新的GET请求:
URL: https://accounts.google.com/o/oauth2/v2/auth
Query Param: redirect_uri=http://localhost:8080
Query Param: prompt=consent
Query Param: response_type=code
Query Param: client_id=<your client id from OAuth credentials>
Query Param: scope=<your chosen scopes, e.g. https://www.googleapis.com/auth/drive.file>
Query Param: access_type=offline
code=<the authorization code from the last step>
client_id=<your client ID again>
client_secret=<your client secret from the OAuth credentials>
redirect_uri=http://localhost:8080
grant_type=authorization_code
并通过节点index.js运行服务器。我建议不要记录整个req
对象,或者运行node index.js | less
,因为完整的输出将是巨大的。
其他语言也有非常简单的解决方案。例如,在8080PHP-s localhost:8080
上使用PHP内置的web服务器
现在启动您的请求(在“失眠”中),系统将提示您登录:
使用您的电子邮件和密码登录并确认同意屏幕(应包含您选择的范围)
返回终端并检查输出。如果您记录了整个事件,请向下滚动(例如,pgdown in less),直到看到一行code=4/…
复制该代码;这是您要交换访问和刷新令牌的授权码。不要复制太多-如果有符号和&
,不要复制它或之后的任何东西<代码>&
限定查询参数。我们只需要代码
现在设置一个指向https://www.googleapis.com/oauth2/v4/token
作为表单URL编码。在其他工具中,您可能需要自己将标题设置为内容类型:application/x-www-form-urlencoded
添加以下参数:
URL: https://accounts.google.com/o/oauth2/v2/auth
Query Param: redirect_uri=http://localhost:8080
Query Param: prompt=consent
Query Param: response_type=code
Query Param: client_id=<your client id from OAuth credentials>
Query Param: scope=<your chosen scopes, e.g. https://www.googleapis.com/auth/drive.file>
Query Param: access_type=offline
code=<the authorization code from the last step>
client_id=<your client ID again>
client_secret=<your client secret from the OAuth credentials>
redirect_uri=http://localhost:8080
grant_type=authorization_code
您可以立即使用访问\u令牌
,但它的有效期仅为一小时。请注意刷新标记。这是您始终可以*交换新访问令牌的令牌
*
您将拥有