上面的答案很好用,是我使用 Curl 将文件上传到 Google Drive 时使用的命令。但是,我不明白范围是什么以及使该命令正常工作所需的所有初始设置。因此,出于文档目的。我会给出第二个答案。
在撰写本文时有效...
访问Credentials page 并创建一个新凭据(假设您已经创建了一个项目)。我为电视和受限设备创建了凭据,因此工作流程类似于:
创建凭据 > OAuth 客户端 ID > 应用程序类型 > 电视和受限输入设备 > 命名客户端 > 单击创建。
执行此操作后,我可以在查看新创建的凭据时复制客户端 ID 和客户端密码。
注意:只应替换 Curl 命令中带有双星号的变量。
下一步是运行 Curl 命令:
curl -d "client_id=**client_id**&scope=**scope**" https://oauth2.googleapis.com/device/code
在这种情况下,
Scope 可以被认为是您打算使用具有输入 client_id 的凭据进行的访问。有关范围的更多信息来自the docs 对于重点用例,即上传文件,选择的范围是https://www.googleapis.com/auth/drive.file。
在运行上面的 curl 命令时,你会得到类似的响应:
{ "device_code": "XXXXXXXXXXXXX", "user_code": "ABCD-EFGH",
“expires_in”:1800,“间隔”:5,“verification_url”:
“https://www.google.com/device”}
下一步是在浏览器的响应中访问 verification_url,提供 user_code 并接受权限请求。遵循所有提示后,您将看到一个代码,其余步骤不需要此代码(但可能有一些理由将其用于其他用例)。
下一步是使用 Curl 命令:
curl -d client_id=**client_id** -d client_secret=**client_secret** -d device_code=**device_code** -d grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Adevice_code https://accounts.google.com/o/oauth2/token
您将收到类似于以下内容的响应:
{ "access_token": "XXXXXXXXX", "expires_in": 3599,
“refresh_token”:“XXXXXXXXX”,“范围”:
“https://www.googleapis.com/auth/drive.file”,“token_type”:“承载者”
}
现在您可以使用访问令牌并使用类似于以下的 Curl 命令遵循接受的答案:
curl -X POST -L \
-H "Authorization: Bearer **access_token**" \
-F "metadata={name : 'backup.zip'};type=application/json;charset=UTF-8" \
-F "file=@backup.zip;type=application/zip" \
"https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart"