1.微博绑定用户接口
1.1 oauth/urls.py 中添加路由
1
2
3
4
|
urlpatterns = [ path( 'weibo/binduser/' , views.OauthWeiboBindUser.as_view()), # / oauth / weibo / callback / ] |
1.2 oauth/views.py 中添加试图函数
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
class OauthWeiboBindUser(APIView): permission_classes = (AllowAny,) def post( self , request): # 绑定用户, 1. 已注册用户, 2. 未注册用户 # 1.1 获取用户名, 密码, weibo_uid username = request.data.get( 'username' ) password = request.data.get( 'password' ) weibo_uid = request.data.get( 'weibo_uid' ) if not all ([username, password, weibo_uid]): return Response({ 'code' : 999 , 'msg' : '参数不全' }) # 0.判断是否存在此用户 try : user = User.objects.get(username = username) except Exception as e: user = None # 1. 已注册用户 if user: # 1.2 , 如果存在就验证 密码, 验证通过,就绑定, 返回token,登录成功 if user.check_password(password): ou = OauthUser(uid = weibo_uid, user = user, oauth_type = '1' ) ou.save() payload = jwt_payload_handler(user) # 通过user对象获取到jwt的 payload信息 token = jwt_encode_handler(payload) # 生成token data = jwt_response_payload_handler(token, user) data[ 'type' ] = '0' # 指定为登录成功 return Response({ 'code' : 0 , 'msg' : '登录成功' , 'data' : data}) else : return Response({ 'code' : 999 , 'msg' : '密码错误' }) else : # 2. 未注册用户 # 2.1 生成新用户, 设置用户名密码, 保存, 然后绑定, 返回token, 登录成功 user = User(username = username) user.set_password(password) user.save() ou = OauthUser(uid = weibo_uid, user = user, oauth_type = '1' ) ou.save() payload = jwt_payload_handler(user) token = jwt_encode_handler(payload) data = jwt_response_payload_handler(token, user) data[ 'type' ] = '0' #指定为登录成功 return Response({ 'code' : 0 , 'msg' : '登陆成功' , 'data' :data}) |