python django码云第三方登录
登陆Gitee
1.点击自己的头像进入设置页面
2.创建应用
3.填写应用相关信息,勾选应用所需要的权限。其中: 回调地址是用户授权后,码云回调到应用,并且回传授权码的地址
应用主页:要求不严格,测试用的话可以直接填http://127.0.0.1:8000/
应用回调地址 :这里要填写自己定义的视图路由,我自己的为http://127.0.0.1:8000/gitee_back
4.创建成功后,会生成 Cliend ID 和 Client Secret。他们将会在上述OAuth2 认证基本流程用到
vue代码
这里只写一个点击方法 //gitee登陆 gitee:function(){ //创建应用后生成的Cliend ID var clientId = '*********************************' //应用回调地址 var redirect_uri = 'http://127.0.0.1:8000/gitee_back' //拼接要请求的地址 var url = 'https://gitee.com/oauth/authorize?client_id='+clientId+'&redirect_uri='+redirect_uri+'&response_type=code' // 进行跳转 window.location.href = url; },
django代码
views.py from django.shortcuts import redirect import requests import json #gitee三方登陆 class Gitee(APIView): def get(self,request): #获取gitee给的code code = request.GET.get('code') #自己的client_id client_id = '*********************************' #client_secret client_secret='******************************************8' #应用回调地址 redirect_uri='http://127.0.0.1:8000/gitee_back' #拼接请求地址 res = requests.post('https://gitee.com/oauth/token?grant_type=authorization_code&code='+code+'&client_id='+client_id+'&redirect_uri='+redirect_uri+'&client_secret='+client_secret) #拿到请求后获取的信息 res = json.loads(res.text) #获取access_token token = res['access_token'] #将access_token参数带上请求此地址,可以获取到用户信息 message = requests.get('https://gitee.com/api/v5/user?access_token='+token) mess = json.loads(message.text) username = mess['login'] user = User.objects.filter(username = username).first() if user: username = user.username uid = user.id else: user = User.objects.create(username=username,password=md5('123456'.encode('utf-8')).hexdigest()) username = user.username uid = user.id #直接重定向到前端地址,可以带上用户的信息,由前端接收并存储 return redirect('http://127.0.0.1:8080/courses') urls.py from django.contrib import admin from django.urls import path from django.conf.urls import url from django.urls import path,re_path from django.views.static import serve #按自己的路径将视图导入 from myapp.views import Gitee urlpatterns = [ #此处的路由一定要和自己定义的回调地址相同 path('gitee_back/', Gitee.as_view()), ]
参考地址
https://gitee.com/api/v5/oauth_doc#/list-item-0