百度云PCS调试过程
其实整个调试过程按照百度的开发指南做就可以了,只是现在百度云平台又改版,而开发文档在一些地方没有同步更新。所以写下我的调试过程供大家参考。
1、当然首先是注册成为百度开发者
2、任意创建一个应用,我选择的是创建一个轻应用,因为有模板,几步就创建好了。
3、创建完成以后在“开发者服务管理”中就可以看到你创建的应用了,然后点击进入刚创建的应用的管理页面,选择其他API
这里可以看到"PCS API" 项,当前状态应该是关闭的,这个需要申请提交百度进行审核才能开通,这点比较坑爹。不过还好我申请几天后就开通了,贴吧里有人说申请了1个多月没反应。
这里可以直接点"PCS API" 就可以打开PCS的开发文档,http://developer.baidu.com/wiki/index.php?title=docs/pcs。里面有一节是“开通PCS API权限”,可以参考。
4、PCS API权限申请通过以后就可以进行“获取Access_Token”了,有几种方式具体可以参考开发文档。我选择的是“Device授权”方式。因为我是在我的linux虚拟机上测试,完全是一个client方式。具体说明开发文档写得比较全,在浏览器中访问该地址:
https://openapi.baidu.com/oauth/2.0/device/code?client_id=Va5yQRHlA4Fq4eR3LT0vuXV4&response_type=device_code&scope=basic,netdisk
其中client_id为“开发者服务管理”页面的“API Key”。成功后会返回一段json:
{
"device_code":"a82hjs723h72h3a82hjs723h72h3vb",
"user_code":"8sjiae3p",
"verification_url":"https:\/\/openapi.baidu.com\/oauth\/2\.0\/device",
"qrcode_url":"http:\/\/openapi.baidu.com\/device\/qrcode\/6c6a8afee394f99e55eb25858\/2c885vjk",
"expires_in":1800,
"interval":5
}
我们需要用的就是这个 “device_code”、"user_code",打开http://openapi.baidu.com/device,登录想要使用的百度网盘账号,填写user_code,进行授权。完成以后再访问
https://openapi.baidu.com/oauth/2.0/token?
grant_type=device_token&
code=ANXxSNjwQDugOnqeikRMu2bKaXCdlLxn&
client_id=Va5yQRHlA4Fq4eR3LT0vuXV4&
client_secret=0rDSjzQ20XUj5itV7WRtznPQSzr5pVw2
这里的code就是device_code。这一次就拿到真正需要的access_token了:
{
"access_token": "1.a6b7dbd428f731035f771b8d15063f61.86400.1292922000-2346678-124328",
"expires_in": 86400,
"refresh_token": "2.385d55f8615fdfd9edb7c4b5ebdc3e39.604800.1293440400-2346678-124328",
"scope": "basic email",
"session_key": "ANXxSNjwQDugf8615OnqeikRMu2bKaXCdlLxn",
"session_secret": "248APxvxjCZ0VEC43EYrvxqaK4oZExMB",
}
5、由于我是在虚拟机调试,使用curl工具发起https请求,详细注解请参考:
获取空间配合信息:
curl "https://pcs.baidu.com/rest/2.0/pcs/quota?method=info&access_token=1.a6b7dbd428f731035f771b8d15063f61.86400.1292922000-2346678-124328"
返回:
{"quota":2850784542720,"used":6715600798,"request_id":2655147104}
上传文件:
curl -F "action=upload" -F "filename=@test.txt" "https://pcs.baidu.com/rest/2.0/pcs/file?method=upload&path=%2Fapps%2Fuser_data%2ftest.txt&access_token=1.a6b7dbd428f731035f771b8d15063f61.86400.1292922000-2346678-124328"
结果:
请注意,这里的path是我遇到的最大的问题,开始的尝试都是path=%2Fapps,返回{"error_code":31064,"error_msg":"file is not authorized","request_id":3760805529}。后来才知道应用只能访问下面一层的user_data目录,这里的user_data应该是在申请开通PCS API权限的时候填写的。
查看上传的文件:
curl "https://pcs.baidu.com/rest/2.0/pcs/file?method=list&access_token=1.a6b7dbd428f731035f771b8d15063f61.86400.1292922000-2346678-124328&path=%2Fapps%2Fuser_data"
至此整个过程基本上就跑通了。