使用新浪微博开放平台api同步微博内容至自己网站(新浪微博:山寨版的twitter,各种粉丝的登录逻辑)
优采云 发布时间: 2021-10-14 18:32使用新浪微博开放平台api同步微博内容至自己网站(新浪微博:山寨版的twitter,各种粉丝的登录逻辑)
新浪微博:盗版推特,各种粉丝的集散地,天朝国人的最爱,基本上所有网友都有微博账号,所以使用新浪微博账号进行三向登录就显得尤为重要改善用户登录体验。这次我用Python3+Tornado5集成了微博登录,记录一下,还是有很多坑。
首先注册微博开放平台:
选择微链接-》网站访问=>立即访问创建新应用
应用创建成功后,会立即跳转到审核页面。您需要填写一些资格进行审核。其实这些review的领域是不需要打理的,申请完全不需要通过review
直接拿到a*敏*感*词*ey和appsecret,然后马上点击高级信息填写回调URL
需要注意的是,回调授权和取消回调授权地址需要一致
那么新浪微博的登录逻辑就很简单了:拼接url=>回调获取code=>uid和access_token交换code=>使用access_token获取用户信息
首先第一步是拼接url,这里我们使用Tornado来编写控制器
#新浪微博登录地址组合返回(第一步)
class SinaFirstHandler(BaseHandler):
def get(self,*args,**kwargs):
#微博接口地址
weibo_auth_url = "https://api.weibo.com/oauth2/authorize"
#回调网址
redirect_url = "http://127.0.0.1:8000/md_admin/weibo"
#应用id
client_id = "2636039333"
#组合url
auth_url = weibo_auth_url + "?client_id={client_id}&redirect_uri={re_url}".format(client_id=client_id,
re_url=redirect_url)
self.write(auth_url)
第二步,回调获取code,交换access_token和uid
#新浪微博回调地址(第二步)
class SinaBackHandler(BaseHandler):
def get(self,*args,**kwargs):
#获取回调的code
code = self.get_argument('code')
#微博认证地址
access_token_url = "https://api.weibo.com/oauth2/access_token"
#参数 向新浪接口发送请求
re_dict = requests.post(access_token_url,data={
"client_id": '2636039333',
"client_secret": "4e2fbdb39432c31dc5c2f90be3afa5ce",
"grant_type": "authorization_code",
"code": code,
"redirect_uri": "http://127.0.0.1:8000/md_admin/weibo",
})
re_dict = re_dict.text
re_dict = eval(re_dict)
print(re_dict.get('uid'))
self.write(re_dict)
接下来的情况就有点乱了,因为新浪规定,如果申请没有通过审核,那么部分新浪接口是没有权限请求的。可以说,你手上只有access_token和uid,其他的也改不了。我该怎么办,没有人会免费拿到营业执照来测试接口,但是有一个曲线救国,就是在测试信息页面上添加一个测试帐户。添加测试账号后,就可以请求相应的接口了。
最后使用你手上的access_token和uid获取当前用户的用户名
result = requests.get('https://api.weibo.com/2/users/show.json',params={'access_token':res['access_token'],'uid':res['uid']})
result = json.loads(result.text)
print(result['name'])
可以看到接口请求成功
完成它。