1. 程式人生 > 實用技巧 >python django碼雲第三方登入

python django碼雲第三方登入

登陸Gitee

1.點選自己的頭像進入設定頁面

2.建立應用

3.填寫應用相關資訊,勾選應用所需要的許可權。其中: 回撥地址是使用者授權後,碼雲回撥到應用,並且回傳授權碼的地址

應用主頁:要求不嚴格,測試用的話可以直接填http://127.0.0.1:8000/

應用回撥地址 :這裡要填寫自己定義的檢視路由,我自己的為http://127.0.0.1:8000/gitee_back

4.建立成功後,會生成 Cliend IDClient 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