tornado新浪微博第三方登录

申请成为新浪微博开发者流程

新建应用,获取appid和app密钥

具体流程:

https://blog.csdn.net/qq_42249896/article/details/87433349

新浪微博拼接登录代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14

'''调用微博登录'''
class (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)

新浪微博回调代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#新浪微博回调地址(第二步)
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)
uid = re_dict.get('uid')
if uid:
user = User()
user.name = uid
user.social_attr = 1
session.add(user)
session.commit()

user_ = session.query(User).filter_by(name=uid).first()
self.redirect('http://localhost:8080/?uid=%s' %(user_.id))

业务流程

访问拼接地址获取登录地址-》在回调网址内判断新浪微博是否登录成功