仅使用cURL获取Google OAuth2访问令牌 [英] get google Oauth2 access token using ONLY curl

查看:39
本文介绍了仅使用cURL获取Google OAuth2访问令牌的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我要使用curl将PDF文件上载到Google Drive,以便进行自动测试。

我已在Google Cloud平台上创建了一个帐户(获得了客户端ID和密码),并启用了Google Drive API。

使用OAuth2进行连接的所有方法都涉及Web浏览器或单击某些按钮,我不打算这样做。

有没有办法只使用cmd终端中的curl命令,使使用OAuth2进行身份验证和获取访问令牌的整个过程能够使用它上传文件?

谢谢。

推荐答案

以下命令将向您展示如何使用cURL授权到google。您至少必须使用Web浏览器一次才能获取刷新令牌一旦您有了刷新令牌,之后只需使用命令再次请求一个新令牌即可。

# Client id from Google Developer console
# Client Secret from Google Developer console
# Scope this is a space separated list of the scopes of access you are requesting.

# Authorization link.  Place this in a browser and copy the code that is returned after you accept the scopes.
https://accounts.google.com/o/oauth2/auth?client_id=[Application Client Id]&redirect_uri=urn:ietf:wg:oauth:2.0:oob&scope=[Scopes]&response_type=code

# Exchange Authorization code for an access token and a refresh token.

curl 
--request POST 
--data "code=[Authentication code from authorization link]&client_id=[Application Client Id]&client_secret=[Application Client Secret]&redirect_uri=urn:ietf:wg:oauth:2.0:oob&grant_type=authorization_code" 
https://accounts.google.com/o/oauth2/token

# Exchange a refresh token for a new access token.
curl 
--request POST 
--data 'client_id=[Application Client Id]&client_secret=[Application Client Secret]&refresh_token=[Refresh token granted by second step]&grant_type=refresh_token' 
https://accounts.google.com/o/oauth2/token

提示:

上载分为两部分,您需要先上载元数据,然后上载实际文件的文件流。

创建和更新是有区别的。如果它是现有文件,您将需要使用UPDATE而不是CREATE,否则您每次都将获得一个新文件。

代码摘自GoogleAuthenticationCurl.sh

服务帐户

如果您希望完全免提,那么您应该查看服务帐户,我无法帮助您在curl中做到这一点。由于所有令牌的安全性和生成性,我甚至不确定这是否可能。

刷新令牌过期

refresh tokens的官方文档及其可能过期

  • 用户已吊销您的应用访问权限。
  • 刷新令牌已有6个月未使用。
  • 用户更改了密码,刷新令牌包含Gmail作用域。
  • 用户帐户已超过授权(实时)刷新令牌的最大数量。(目前每个OAuth 2.0客户端ID的每个Google帐户有50个刷新令牌的限制。如果达到该限制,创建新的刷新令牌将自动使最旧的刷新令牌无效,而不会发出警告。)

这篇关于仅使用cURL获取Google OAuth2访问令牌的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆