上面的答案很好用,我也是用Curl上传文件到Google Drive时使用的命令。然而,我不明白scope是什么以及使该命令工作所需的所有初始设置。因此,为了记录目的,我将给出第二个答案。
截至撰写本文时有效...
访问
凭据页面并创建新凭据(假设您已创建项目)。我为
电视和有限输入设备创建了凭据,因此工作流程类似于:
创建凭据> OAuth客户端ID> 应用程序类型> 电视和有限输入设备> 命名客户端> 点击创建。
完成后,在查看新创建的凭据时,我能够复制客户端ID和客户端密钥。
注:只有Curl命令中带有双星号的变量应被替换。
下一步是运行Curl命令:
curl -d "client_id=**client_id**&scope=**scope**" https://oauth2.googleapis.com/device/code
在这种情况下,“范围”可以被认为是您希望使用输入的“client_id”凭据所拥有的访问权限类型。有关
文档的更多信息。对于重点上传文件的用例,选择的范围是
https://www.googleapis.com/auth/drive.file
。
运行上述curl命令后,您将获得类似以下响应:
{ "device_code": "XXXXXXXXXXXXX", "user_code": "ABCD-EFGH",
"expires_in": 1800, "interval": 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", "scope":
"https://www.googleapis.com/auth/drive.file", "token_type": "Bearer"
}
现在,您可以使用访问令牌并遵循接受的答案,使用类似于Curl命令的方式:
curl -X POST -L \
-H "Authorization: Bearer **access_token**" \
-F "metadata={name : 'backup.zip'}
-F "file=@backup.zip
"https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart"