前言在写自己的公众号杂谈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获取用户基本信息。
实际代码
未完待续,786160313@qq.com