前言在寫自己的公衆號雜談123過程中,本意是使用python爬蟲爬取bookset網站的電子書,然後保存在自己的服務器上,然後根據特定的請求,可以予以返回對應的電子書下載地址,或者用發送郵件的方式直接推送到用戶自己的kindle上。
問題引入
在我的公衆號還沒有開發完成的情況下,bookset已然不能訪問。於是,只能思考其他思路。
方案
考慮如下幾個方案:
- 從其他網站爬取,比如豆瓣。
- 使用自己庫存在百度網盤中的資源,將百度網盤中的諸多資源下載到自己的服務器上,並用代碼建立相應的索引,放到文件亦或者數據庫中等待用戶索引。
方案權衡
基於方案的考慮權衡了很多,均存在一個極大的缺陷就是——耗費比較大的精力,然後佔用較多的服務器資源(個人的服務器是阿里雲最便宜的單核,比較寶貴。)
偶然發現
公衆號是基於微信提供的restful api開發。於是,反向思維。百度這貨是不是也有這麼個東西,不查不知道,還真有。於是就有了https://pan.baidu.com/union/document/entrance#授權流程
方案結論
在公衆號用戶發起請求的情況下,代替用戶去自己的百度雲盤進行查詢,將百度雲盤當成個人的數據庫,這樣也減少了對自己服務器資源的浪費。僞代碼如下:
代碼
百度授權
本博客假設用戶的查詢請求已經到了,(如果關注公衆號的其他方面,直接去github查詢相應的源碼)需要我們去百度雲盤查詢是否有這本電子書。在最開始的時候需要首先授權。
OAuth2.0(開放授權)是一個開放標準,用戶授權後,第三方應用無需獲取用戶的用戶名和密碼就可以訪問該用戶在某一網站上存儲的私密的資源(如照片,視頻,聯繫人列表)。
Access Token:用戶身份驗證和授權的憑證。第三方應用在調用百度開放API之前,首先需要獲取Access Token。
註冊百度開發者
請依據https://developer.baidu.com/newwiki/dev-wiki/zhu-ce-bai-du-kai-fa-zhe.html?t=1557733846879
開發前的準備
請依據https://developer.baidu.com/newwiki/dev-wiki/kai-fa-qian-zhun-bei.html?t=1557733846879
在次步驟中拿到關鍵的API Key和Secret Key,在接下來的api中會用到。
開發文檔
請依據https://developer.baidu.com/newwiki/dev-wiki/kai-fa-wen-dang.html?t=1557733846879
這部分詳細介紹了API的授權過程如下:
- 引導用戶進入授權頁面同意授權,獲取code;
- 通過code換取網頁授權access_token;
- 如果需要,開發者可以刷新網頁授權access_token,避免過期;
- 通過網頁授權access_token獲取用戶基本信息。
實際代碼
未完待續,[email protected]