• 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

  • 相关阅读:
    C-5 猜数字游戏
    J-8 面向对象
    C-4 一个标准的学生类的代码及测试
    J-7 面向对象
    C-3 this的使用
    J-6 面向对象
    ArcEngine关于单位转换示例
    Arcglobe三维信息系统开发常见问题
    安装arcgis server 10.2遇到的问题总结
    使用Arcglobe 10与3dmax建立三维城市
  • 原文地址:https://www.cnblogs.com/anle123/p/13446182.html
Copyright © 2020-2023  润新知