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

 

posted @ 2020-08-06 14:36  安乐的技术博客  阅读(620)  评论(1编辑  收藏  举报