

使用Django2.0.4集成钉钉第三方扫码登录
source link: https://v3u.cn/a_id_124
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

使用Django2.0.4集成钉钉第三方扫码登录
钉钉作为阿里旗下的一款免费移动通讯软件,受众群体越来越多,这里我们使用Django来集成一下钉钉的三方账号登录,首先注册钉钉开发平台:https://open-dev.dingtalk.com/
在移动应用中选择登录

创建一个网站应用,其中有用的信息是appid,appsecret,还有回调网址

随后,查看官方文档,查看如何构造登录url:https://ding-doc.dingtalk.com/doc#/serverapi2/kymkv6
这里我们用django的视图来操作
#构造钉钉登录url
def ding_url(request):
appid = 'dingoaukgkwqknzjvamdqh'
redirect_uri = 'http://localhost:8000/dingding_back/'
return redirect('https://oapi.dingtalk.com/connect/qrconnect?appid='+appid+'&response_type=code&scope=snsapi_login&state=STATE&redirect_uri='+redirect_uri)
然后访问http://localhost:8000/ding_url,就可以进行扫码

随后,钉钉会将code返回到回调网址中,查看官方文档,只有java和php的sdk,并没有python的

怎么办,没关系,自己写,逻辑很简单,将时间戳,秘钥进行hmac加密即可
import time
import hmac
import base64
from hashlib import sha256
import urllib
import json
#构造钉钉回调方法
def ding_back(request):
#获取code
code = request.GET.get("code")
t = time.time()
#时间戳
timestamp = str((int(round(t * 1000))))
appSecret ='ly-AzMKMmCKQP3geaILT_An32kEfKO3HeOtApy5CgKwjytevVZC0WYsT2gxMB160'
#构造签名
signature = base64.b64encode(hmac.new(appSecret.encode('utf-8'),timestamp.encode('utf-8'), digestmod=sha256).digest())
#请求接口,换取钉钉用户名
payload = {'tmp_auth_code':code}
headers = {'Content-Type': 'application/json'}
res = requests.post('https://oapi.dingtalk.com/sns/getuserinfo_bycode?signature='+urllib.parse.quote(signature.decode("utf-8"))+"×tamp="+timestamp+"&accessKey=dingoaukgkwqknzjvamdqh",data=json.dumps(payload),headers=headers)
res_dict = json.loads(res.text)
print(res_dict)
return HttpResponse(res.text)
访问一下,显示出了钉钉的用户名

就是这么简单,最后附上项目地址:https://gitee.com/QiHanXiBei/mydjango
Recommend
-
63
小程序扫码登录 - 免除微信年审费用即可获取微信用户个人资料 - NEXT
-
53
WeAuth 微信扫码登录 - 全新的微信扫码登录方式,小程序实现,轻松接入且有开源演示 - NEXT
-
24
程序员 - @longjiahui - 例如我刚刚要登录一下 腾讯云,然后 首先默认微信扫码登录,我还得掏出手机,打开微信,点击+ 扫一扫。然后用 qq,点击 qq 登录,然后默认 qq 手机版扫码 😂,又点账号密码登录。大家喜欢扫
-
25
腾讯游戏王者荣耀扫码登录源码 腾讯游戏王...
-
7
本文引用了作者“大古同学”的“二维码扫码登录是什么原理”一文的主要内容,为了更好的理解和阅读,即时通讯网收录时有修订和改动,感谢原作者的分享。自从微信的PC端使用扫码登陆认证逻辑后,这种方式似乎在越来越多的IM中看到(...
-
7
二维码扫码登录原理 在日常生活中,二维码出现在很多场景,比如超市支付、系统登录、应用下载等等。了解二维码的原理,可以为技术人员在技术选型时提供新的思路。
-
6
Python3+Django2集成PayPal(贝宝)跨境支付三方接口以及订单查询和退款业务首页 - Python/2020-06-14
-
7
Python3.7配合Django2.0来调用钉钉(dingding)在线api实时监测员工考勤打卡情况首页 - Python/2020-04-12
-
12
🎈 项目效果# 由于 ChatGPT 目前只能在漂亮国使用,所以想要在国内使用 ChatGPT
-
3
Python3.7.2+Django2.0.4 美多商城集成最新版支付宝支付接口(2019.04)首页 - Python/2019-04-10 最新版支付宝...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK