zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    .Net Web开发技术栈
    C#foreach原理
    C#位运算符
    python写12306抢票
    java语法学习
    建立个人知识体系
    struts2静态方法和动态方法调用
    springmvc跳转的几种方式
    JDBC驱动程序的四种方式
    eclipse用axis2发布webserver
  • 原文地址:https://www.cnblogs.com/anle123/p/13446182.html
Copyright © 2011-2022 走看看