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去请求换取用户身份信息
作者:就学45分钟
出处:https://www.cnblogs.com/tjw-bk/p/14164670.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
分类:
项目--三方登陆
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了