• python +django 实现码云(gitee)三方登陆


    python +django 实现码云(gitee)三方登陆


    参考博客:https://v3u.cn/a_id_154
    https://www.cnblogs.com/anle123/p/13446182.html

    gitee开发文档:https://gitee.com/api/v5/oauth_doc#/list-item-1

    官网地址:https://gitee.com/

    OAuth2 认证基本流程

    首先注册码云的账号,并且新建三方应用

    a. 点击自己的头像进入设置页面
    b.点击新建三方应用

    (~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~)

    3.填写应用相关信息,勾选应用所需要的权限。其中: 回调地址是用户授权后,码云回调到应用,并且回传授权码的地址

    (~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~)

    应用主页:要求不严格,测试用的话可以直接填http://127.0.0.1:8000/

    应用回调地址 :这里要填写自己定义的视图路由,我自己的为http://127.0.0.1:8000/gitee_back

    (~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~)

    4.创建成功后,会生成 Cliend ID 和 Client Secret。他们将会在上述OAuth2 认证基本流程用到

    vue端代码

    我们这里直接使用window.location.href = url;进行调转。

    这里只写一个点击方法
    
    //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;
    },
    

    (~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~)

    随后的流程可以参照官方文档:https://gitee.com/api/v5/oauth_doc#/

    django代码

    第一步,通过 浏览器 或 Webview 将用户引导到码云三方认证页面上( GET请求 )
    class Gitee(View):
    
        def get(self,request):
    
            return redirect("https://gitee.com/oauth/authorize?client_id=你的应用id&redirect_uri=http://localhost:8000/gitee_back&response_type=code")
    

    (~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~)

    第二步,如果用户授权登录成功,gitee则会通过回调网址将code传递给第三方应用,此时三方应用可以通过code换取access_token

    class GiteeBack(View):
    
        def get(self,request):
    
            code = request.GET.get("code",None)
    
            r = requests.post("https://gitee.com/oauth/token?grant_type=authorization_code&code=%s&client_id=你的应用id&redirect_uri=http://localhost:8000/gitee_back&client_secret=你的应用秘钥" % code)
            print(r.text)
    
            return HttpResponse("ok")
    

    (~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~)

    这里我们以基础用户信息接口为例子

    r = requests.get("https://gitee.com/api/v5/user?access_token=获取到的accesstoken")
    
    print(r.text)
    

    最后我们会得到一个用户信息。

    (~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~)

    总结

    ​ 用户通过前端点击gitee登陆图标,跳转到gitee授权页面点击授权我们会获取到用户token,通过token去请求换取用户身份信息

  • 相关阅读:
    新代(Syntec)机床的IP设置
    使用任务计划程序实现用户未登录情况下的程序开机自启动
    sql server 数据库访问端口配置
    Http请求
    EF
    SQL Server常用处理
    利用ZXing生成条码二维码例子
    SQL JOIN常见情况
    C#ORM框架收集
    sql server连接oracle并实现增删改查
  • 原文地址:https://www.cnblogs.com/tjw-bk/p/14164670.html
Copyright © 2020-2023  润新知