其實整個調試過程按照百度的開發指南做就可以了,只是現在百度雲平台又改版,而開發文檔在一些地方沒有同步更新。所以寫下我的調試過程供大家參考。
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"
至此整個過程基本上就跑通了。