首页 > 其他 > 详细

微博回调接口

时间:2020-10-11 18:40:09      阅读:27      评论:0      收藏:0      [点我收藏+]

1.微博回调接口

1.1 oauth/urls.py中添加路由

urlpatterns = [    
    path(weibo/callback/, views.OauthWeiboCallback.as_view()),  
    # /oauth/weibo/callback/ 

]

 

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

 

技术分享图片
from user.models import User

from .models import OauthUser
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):
        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:参数不全})
        try:
            user=User.objects.get(username=username)
        except Exception as e:
            user=None

        if user:
            if user.check_password(password):
                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})
            else:
                return Response({code:999,msg:密码错误})
        else:
            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})
oauth/views.py

 

1.3 oauth/models.py中添加用户绑定模型

技术分享图片
# 把三方的用户信息,和本地的用户信息进行绑定
class OauthUser(models.Model):
    OAUTHTYPE = (
                    (1, weibo),
                    (2, weixin),
    )
    uid = models.CharField(三方用户id, max_length=64)
    # 三方用户id
    user = models.ForeignKey(user.User, on_delete=models.CASCADE)
    # 本地用户外键,关联User表
    oauth_type = models.CharField(认证类型, max_length=10, choices=OAUTHTYPE)
    # 1,2 ...
oauth/models.py

 

1.4 迁移数据库

python manager.py makemigrations

python manager.py migrate

 

微博回调接口

原文:https://www.cnblogs.com/xiaoxiamiaichiyu/p/13797662.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!