python django碼雲第三方登入
阿新 • • 發佈:2020-08-06
登陸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()), ]