我正在尝试与pCloudAPI交朋友,在Bash中使用curl,
创建pCloud应用程序并获取其$clientid
和$clientsecret
后,我可以在以下位置获取接受请求的临时访问令牌:
echo "https://my.pcloud.com/oauth2/authorize?client_id=$clientid&response_type=code"
给定$temptok
令牌,我将获得永久不记名令牌:
permtok=$(curl "https://api.pcloud.com/oauth2_token?client_id=$clientid&client_secret=$clientsecret&code=$temptok" | jq -r '.access_token')
此时,我可以使用自己的API方法,发布here。
例如,userinfo或listfolder方法会给予:
curl "https://api.pcloud.com/userinfo?access_token=$permtok"
curl "https://api.pcloud.com/listfolder?access_token=$permtok&path=/"
但是,我无法下载文件。根据我的理解,我需要使用file_open和file_read的组合,后者需要文件大小。当我打开一个文件时,我得到类似于以下内容的输出:
curl "https://api.pcloud.com/file_open?access_token=$permtok&path=/foo.txt&flags=0x0040"
{
"result": 0,
"fd": 1,
"fileid": 1234567890
}
当使用file_size
方法的文件描述符时:
curl "https://api.pcloud.com/file_size?access_token=$permtok&fd=1"
我得到的错误:
{
"result": 1007,
"error": "Invalid or closed file descriptor."
}
下载文件的正确方法是什么?
1条答案
按热度按时间myzjeezk1#
概述下载文件的命令x1c 0d1x
我可以通过带有getfolderpublink链接的浏览器下载文件。
curl
可以下载文件。但是pCloud网站上没有文档。我是通过浏览器调试窗口(F12)找到的。我意识到download API也不是真正的下载,它只是获取文件的文件 meta数据。
通过Curl下载文件
演示
1获取身份验证ID
2获取访问令牌和身份验证代码
Auth
代码很重要,并且获取带有代码的访问令牌。
React性
3在终端为环境变量分配令牌名
4通过get list-folder API获取文件信息
我将下载一个文件
Getting started with pCloud.pdf
,我需要从JSON响应中获取fileid
。“fileid”是43338896472
5通过stat API获取文件信息(包括文件大小)
第一个
6获取getfilepublink API
link
信息第一个
7获取download metadata API-与步骤6的部分结果相同
8获取文件路径和主机URL
Host name
数组将根据文件的属性(官方默认文件或个人文件)而有所不同第一个
9最后,我可以使用步骤8的主机名和路径进行下载
full URL
=Host[0] name
+path
(删除前两个字符\ /)型
x1c4d 1x指令集
我可以通过浏览器2下载。