vue+Django接入钉钉登录

news/2024/11/14 11:53:25/

前端处理

 dingtalkLogin() {let url = `https://login.dingtalk.com/oauth2/auth?redirect_uri=${this.dingRedirectUrl}&response_type=code&client_id=${this.appKey}&scope=openid&state=STATE&prompt=consent`window.location.href = url;},

后端处理

def dingtalk_auth(request):try:code = request.GET['code']logger.info('钉钉临时授权码获取 ----{}'.format(code))token = get_user_token(code)  # oauth2/userAccessTokenlogger.info('根据钉钉临时授权码获取token ----{}'.format(token))user_resp = get_user_info(token)  # /contact/users/{}logger.info('根据获取用户信息 ----{}'.format(user_resp))user = User.objects.filter(username=user_resp['mobile']).first()if user:user.email = user_resp.get('email', '')user.save()else:params = {'username': user_resp.get('mobile'),'first_name': user_resp.get('nick'),'dingtalk_name': user_resp.get('nick'),'dingtalk_avatar': user_resp.get('avatarUrl'),'mobile_phone': user_resp.get('mobile'),'email': user_resp.get('email'),'is_superuser': False}user = User.objects.create(**params)logger.info('根据用户信息 ----{}'.format(user.username))if not user.is_staff:print("----校验用户登录权限{}----".format(user.is_staff))return JsonResponse({'code': 204, "msg": '请确认您是否有此网站的登录权限'})refresh = RefreshToken.for_user(user)# 生成一个Django自己的tokenresult = {'code': 200, "username": user.username, "token": str(refresh.access_token)}print("----校验用户获取返回值为{}----".format(result))return JsonResponse(result)except Exception as e:print(e)print(traceback.format_exc())logger.info('钉钉登录报错 ----{}'.format(traceback.format_exc()))return JsonResponse({'code': 400, 'errmsg': str(e)})

参考
https://developer.aliyun.com/article/1488636
https://open.dingtalk.com/document/orgapp-server/use-dingtalk-account-to-log-on-to-third-party-websites-1?spm=a2c6h.12873639.article-detail.7.5d622205VHxpO0#title-fre-oe4-zqn


http://www.ppmy.cn/news/1467078.html

相关文章

Linux学习笔记6 进程角度看内存泄露

一,从进程角度看堆区内存申请与释放问题 1,c语言中的内存泄漏 内存溢出:申请内存时,没用足够的内存可以使用。 内存泄露:严格来说,只有对象不会再被程序用到了,但是GC又不能回收它们的情况&…

【react】useEffect 快速上手

useEffect 快速上手 useEffect(setup, dependencies?) 可以接收两个参数,分别是回调函数与依赖数组. useEffect 用什么姿势来调用,本质上取决于你想用它来达成什么样的效果。下面我们来简单介绍 useEffect 的调用规则。 每一次渲染后都执行的副作用&a…

PDF 转 word (优化版)

PDF 转 word (优化版) 原文链接:url,针对原文做了一些优化,适配性更好 首先在pdf所在文件夹中创建pdf2word.py import os from pdf2docx import Converterdef pdf_docx():# 获取当前路径file_path os.getcwd()# 获取…

HTML静态网页成品作业(HTML+CSS)——游戏阴阳师介绍网页(4个页面)

🎉不定期分享源码,关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 🏷️本套采用HTMLCSS,未使用Javacsript代码,共有4个页面。 二、作品演示 三、代…

华为OD机试 - 贪心歌手 - 动态规划(Java 2024 D卷 200分)

华为OD机试 2024C卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题(D卷C卷A卷B卷)》。 刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测…

【Java面试】十二、Kafka相关

文章目录 1、Kafka如何保证消息不丢失1.1 生产者发消息到Brocker丢失:设置异步发送1.2 消息在Broker存储时丢失:发送确认机制1.3 消费者从Brocker接收消息丢失1.4 同步 异步组合提交偏移量 2、Kafka如何保证消费的顺序性3、Kafka高可用机制3.1 集群模式…

家庭组网介绍

光纤是光信号,网线是电信号,光猫一个 很重要的特点就是做光电转换 光猫也可能有wifi功能,否则要买路由器 有了这些设备还不一定能上网,需要买运营商的带宽服务,还需要买公网ip的使用权 通过NAT技术上网(…

什么是人机协同翻译

什么是人机协同翻译 序什么是人机协同翻译账号绑定服务开通文档翻译图片翻译体验感受及建议 序 什么是人机协同翻译,为什么会需要人机协同翻译,以及人机协同翻译的效果,应用场景等,本文将关于这些内容一一解答。 什么是人机协同…