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

浙公网安备 33010602011771号