zoukankan      html  css  js  c++  java
  • 微博绑定用户接口(下)

    1.微博绑定用户接口

    1.1 oauth/urls.py 中添加路由

    urlpatterns = [ 
      path('weibo/binduser/', views.OauthWeiboBindUser.as_view()), # /oauth/weibo/callback/ 
    ]
    

    1.2 oauth/views.py 中添加试图函数

    from apps.user.models import User
    from rest_framework.permissions import AllowAny
    from rest_framework.response import Response
    from rest_framework.views import APIView
    from rest_framework_jwt.serializers import jwt_payload_handler,jwt_encode_handler
    from user.utils import jwt_response_payload_handler
    
    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})
    

    1.3 回调地址

     http://127.0.0.1:8888/oauth/weibo/binduser/
    
  • 相关阅读:
    算法训练 表达式计算
    基础练习 十六进制转十进制
    基础练习 十六进制转十进制
    基础练习 十六进制转十进制
    New ways to verify that Multipath TCP works through your network
    TCP的拥塞控制 (Tahoe Reno NewReno SACK)
    Multipath TCP Port for Android 4.1.2
    How to enable ping response in windows 7?
    NS3
    Multipath TCP Port for Android
  • 原文地址:https://www.cnblogs.com/Beginner-Y/p/13788438.html
Copyright © 2011-2022 走看看