绑定微博用户接口
1.微博绑定用户接口
1.1 oauth/urls.py 中添加路由
urlpatterns = [ path('weibo/binduser/', views.OauthWeiboBindUser.as_view()), # /oauth/weibo/callback/ ]
1.2 oauth/views.py 中添加试图函数
oatuth/views.py
from urllib.parse import urlencode from django.contrib.auth.hashers import make_password from django.shortcuts import render # Create your views here. from rest_framework.response import Response from rest_framework.views import APIView import json from oauth.models import OauthUser from user.models import User from utils.MyBaseVIew import create_token class WeiBoURL(APIView): def post(self, request): url = 'https://api.weibo.com/oauth2/authorize?' # 微博授权的 url地址 data = { 'client_id': '3166523685', 'response_type': 'code', 'redirect_uri': 'http://127.0.0.1:8888/oauth/callback/', } weibo_url = url + urlencode(data) return Response({'code': '0', 'msg': '成功', 'data': {'url': weibo_url}}) class WeiBocallback(APIView): def post(self, request): code = request.data.get("code") data = { 'client_id': '3166523685', 'client_secret': 'c4f70f86720d9ca56491890fd90e925b', 'grant_type': 'authorization_code', 'code': code, 'redirect_uri': 'http://127.0.0.1:8888/oauth/callback/' } url = "https://api.weibo.com/oauth2/access_token" import requests weibo_data = requests.post(url=url, data=data) print(type(weibo_data)) json_weibo_data = weibo_data.json() uid = json_weibo_data.get("uid") if uid: try: uid_user = OauthUser.objects.get(uid=uid) res_data = { 'code': 0, "msg": "授权成功", "data": { "type": 0, "uid": uid, "username": uid_user.user.username, "token": create_token(uid_user.user) } } return Response(res_data) except Exception as e: res_data = { 'code': 0, "msg": "授权成功", "data": { "type": 1, "uid": uid, } } return Response(res_data) else: return Response({"code": 999, "msg": "获取微博信息失败"}) class WeiBoBindUser(APIView): def post(self, request): oauth_type = 1 username = request.data.get("username") password = request.data.get("passwoed") weibo_uid = request.data.get("weibo_uid") if all([username, password, weibo_uid]): return Response({"code": 4005, "msg": "参数不全"}) try: user = User.objects.get(username=username) oauthinfo = OauthUser.objects.create(uid=weibo_uid, oauth_type=oauth_type, user=user) data = { "authenticcated": True, "id": user.id, "role": None, "name": user.nick_name, "username": username, "email": user.email, "token": create_token(user), "type": 0 } res_data = { "code": 0, "msg": "登录成功", "data": data } return Response(res_data) except Exception as e: password = make_password(password) user = User.objects.create(username=username, password=password) oauthinfo = OauthUser.objects.create(uid=weibo_uid, oauth_type=oauth_type, user=user) data = { "authenticcated": True, "id": user.id, "role": None, "name": user.nick_name, "username": username, "email": user.email, "token": create_token(user), "type": 0 } res_data = { "code": 0, "msg": "登录成功", "data": data } return Response(res_data)

浙公网安备 33010602011771号