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去请求换取用户身份信息

posted @   就学45分钟  阅读(792)  评论(1编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
点击右上角即可分享
微信分享提示
主题色彩