首页 > 技术文章 > 绑定微博用户接口

zj555 2020-11-06 08:33 原文

1. 微博绑定用户接口


1.1 oauth/urls.py 中添加路由


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

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


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, weibi_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(user)		# 生成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})

推荐阅读