提示:仅供参考
提示:以下是本篇文章正文内容,下面案例可供参考
一、使用步骤
1.调用官方文档
代码如下(示例):
class Wburl(BaseHandler):
def get(self):
client_id = ""
redirect_uri = ""
# 微博平台地址
url = "https://api.weibo.com/oauth2/authorize?client_id=%s&redirect_uri=%s&response_type=code" % (
client_id, redirect_uri)
return self.finish({"code": 200, 'url': url})
2.回调
代码如下(示例):
# 回调
class WeiboCallback(BaseHandler):
def get(self):
# 获取code
code = self.get_query_argument("code")
print("code", code)
# 向access_token接口发送post请求
data = {"client_id": '', "client_secret": "",
"grant_type": "authorization_code",
'redirect_uri': '', 'code': code}
# 获取https://api.weibo.com/oauth2/access_token信息 token uid
res = requests.post('https://api.weibo.com/oauth2/access_token', data=data)
# 根据返回结果操作
# 先json转为字点获取token和uid
message = json.loads(res.text)
token = message['access_token']
uid = message['uid']
# 查询uid在数据库中是否存在,如果存在用用户信息生成jwt token返回
sql = "select user.id,user.mobile from sf_login inner join user on sf_login.userid=user.id where sf_login.uid='%s'" % (
str(uid))
user = db.findone(sql)
# 如果存在
if user:
# 生成jwt
# 返回jwt token
token = myjwt.jwt_encode(
data={"data": {"uid": user['id'], "mobile": user['mobile'], 'exp': int(time.time())}})
# 生成token,跳转到vue中转页,前端中转页面不用做任何操作只保存token
self.redirect("http://localhost:8080/updatetoken?token=" + token + "&userid=" + str(user['id']))
else:
# 不存在,就跳转到绑定手机号页面
self.redirect("http://localhost:8080/wblogin?token=" + str(token) + "&uid=" + str(uid))
3.绑定手机号
代码如下(示例):
class Setsf(BaseHandler):
def post(self):
# 接收参数
data = json.loads(self.request.body)
# 先判断手机号是否在用户表中存在
sql = "select * from user where mobile='%s'" % (data["mobile"])
res = db.findone(sql)
if res:
# 加入用户表
sql2 = "insert into sf_login(userid,webfrom,uid,token) values(%d,'weibo','%s','%s')" % (
int(res['id']), data['uid'], data['token'])
db.add(sql2)
db.commit()
# 返回jwt token
token = myjwt.jwt_encode(
data={"data": {"uid": int(res['id']), "mobile": data['mobile'], 'exp': int(time.time())}})
return self.finish({"code": 200, "token": token, "userid": int(res['id'])})
else:
# 加入用户表
sql = "insert into user(mobile) values('%s')" % (data['mobile'])
userid = db.add(sql)
print("userid>>>>", userid)
# 加入三方登录表
sql2 = "insert into sf_login(userid,webfrom,uid,token) values(%d,'weibo','%s','%s')" % (
userid, data['uid'], data['token'])
db.add(sql2)
db.commit()
# 返回jwt token
token = myjwt.jwt_encode(data={"data": {"uid": userid, "mobile": data['mobile'], 'exp': int(time.time())}})
return self.finish({"code": 200, "token": token, "userid": userid})
2万+

被折叠的 条评论
为什么被折叠?



