gpt4 book ai didi

curl - 如何使用 cURL 连接到 Google Drive API?

转载 作者:行者123 更新时间:2023-12-02 06:34:20 29 4
gpt4 key购买 nike

假设有三个步骤,

  1. 获取设备代码,
  2. 获取身份验证 token ,
  3. 连接到 Google 云端硬盘。

第 1 步:当(且仅当)我忽略各种操作方法链接上列出的必要的 redirect_url 参数时,我才能完成第 1 步。所以这是...

curl -d 'client_id=*client_id*' -d 'scope=https://www.googleapis.com/auth/drive.file' -d 'response_type=code' 'https://accounts.google.com/o/oauth2/device/code'

此时的返回是...{“device_code”:“[device_code]”,“user_code”:“[user_code]”,“expires_in”:1800,“interval”:5,“verification_url”:“https://www.google.com/设备”}

到目前为止一切顺利。

第 2 步:这就是我陷入困境的地方。尝试了以下各种迭代:

curl -H 'Content-Type: application/x-www-form-urlencoded' -d 'client_id=**client_id**' -d 'client_secret=*client_secret*' -d 'grant_type=authorization_code' -d 'redirect_uri=urn:ietf:wg:oauth:2.0:oob' -d 'code=[device_code_from_above]' 'https://accounts.google.com/o/oauth2/token'

以上返回

{"error" : "invalid_grant", "error_description" : "Malformed auth code."}

如果grant_type更改为'http://oauth.net/grant_type/device/1.0',则响应为

{"error" : "invalid_request", "error_description" : "Parameter not allowed for this message type: redirect_uri"}

如果 redirect_uri 被删除,则响应为

{"error" : "authorization_pending"}

上面的 cURL 尝试是引用以下链接拼凑在一起的...... https://developers.google.com/identity/protocols/OAuth2ForDevices

http://www.visualab.org/index.php/using-google-rest-api-for-analytics#comment-157284

list google drive files with curl

Google Drive not listing files in folder

Not able to fetch Google OAuth 2.0 access token

https://www.daimto.com/google-authentication-with-curl/

受阻!

编辑

根据请求,这里的目标是:开发一种在文件上传时收到警报的方法,并建立一个可以根据各种查询有选择地、系统地下载的系统。

我们不使用 Google 云端硬盘的网络用户界面执行此操作的原因是:文件大小相当大:每个文件 10-50GB,Google 无法在不先压缩的情况下批量下载,并且无法压缩超过大小的任何内容这比我们最小的文件还要小。

我们不使用 Google Drive 的应用程序执行此操作的原因是:不可能(据我所知)管理哪些文件在本地下载和不下载,并且无法(再次据我所知)存储到外部卷。

此外,我们还将工作流程数据库集成到我们的媒体上传和下载中:跟踪、日期、进度说明、版本等,这些都不属于任何现有的 Google 系统。因此,这里的目标是看看 Google 的 API 可以为这一切提供哪些选项。

最佳答案

第一步获取代码

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

将其放入浏览器窗口中。并将其中的代码复制到第二步中。我怀疑问题出在您从第一步返回的代码

第二步交换代码

有一个指向您链接的我的博客文章中使用的代码要点的链接。

如您所见,发布数据应作为一个长查询字符串发送,并用 & 分隔

--data 'client_id=[Application Client Id]&client_secret=[Application Client Secret]&refresh_token=[Refresh token granted by second step]&grant_type=refresh_token' \

googleauthenticationcurl.sh中窃取的代码

# Client id from Google Developer console
# Client Secret from Google Developer console
# Scope this is a space seprated 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=[Authentcation 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

-d 不带 (')'s

这看起来工作正常。我删除了不需要的 header 以及代码中的所有 (') 我在返回刷新 token 时没有遇到任何问题

curl -d client_id=103456123799103-vpdthl4ms0soutcrpe036ckqn7rfpn.apps.googleusercontent.com -d client_secret=uxpj6hx1H2N5BFqdnaNhIbie -d grant_type=authorization_code -d redirect_uri=urn:ietf:wg:oauth:2.0:oob -d code=4/AABvK4EPc__nckJBK9UGFIhhls_69SBAyidj8J_o3Zz5-VJN6nz54ew https://accounts.google.com/o/oauth2/token

回复:

{
"access_token" : "pO4LBSreV_r2i8kPklXVTqylXbMXip4OmQ0ZgRW0qZ8_b1ZP_zPJv0Xc_Qqsj9nM5ryWb7C81dYNFkO_bC6ifWA68dIlz40a0owG4GWpbZ2ufkHNXgre4",
"expires_in" : 3600,
"refresh_token" : "1/mEADfx6ffWULNBNFrKnlqOlK1uGL8Z546qBCHg",
"token_type" : "Bearer"
}

关于curl - 如何使用 cURL 连接到 Google Drive API?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51373520/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com