栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Django配置钉钉二维码第三方登录

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Django配置钉钉二维码第三方登录

钉钉文档介绍了2种二维码登录方式:
钉钉文档-扫码登录第三方网站

  • 使用钉钉提供的扫码登录页面
  • 将钉钉登录二维码内嵌到自己页面中
    这次只实验了第一种方式:
1. 配置回调地址


钉钉开发者-钉钉登录与分享中配置回调地址,通过该地址获取用户信息

2. 配置登录页面: dingding_login(view)
def ding_url(request):
    appid ='ding**********tlevq'#钉钉应用的AppKey
    redirect_url='http://127.0.0.1:8000/orders/' #登录成功后的回调地址
    return redirect(
        'https://oapi.dingtalk.com/connect/qrconnect?appid=' + appid + '&response_type=code&scope=snsapi_login&state=STATE&redirect_uri=' + redirect_url)
3. 配置回调地址的信息获取方法

采用钉钉文档中根据sns临时授权码获取用户信息的方法:

名称示例值说明
POST地址https://oapi.dingtalk.com/sns/getuserinfo_bycode
参数accessKey应用的AppKey
参数timestamp1546084445901当前时间戳,单位毫秒
参数 signatureddsdssfsdfxxxx签名计算方法文档说明
dingding_back (view)
from urllib.parse import quote
from hashlib import sha256
import datetime,time,hmac,base64,requests,json
def ding_back(request):
    code=request.GET.get("code") #从回调地址参数中获取临时授权码
    data={"tmp_auth_code":code} #定义字典,POST时只接受JSON数据格式
    uri='https://oapi.dingtalk.com/sns/getuserinfo_bycode?accessKey='
    accessKey='ding************evq' #参数1
    timestamp=str(round(time.time()*1000)) #参数2
    appSecret='******_Ta_B2B*****M-fIFRz******9ZrY-*********ek2S*********' #计算签名信息使用的密钥
    signature=base64.b64encode(hmac.new(appSecret.encode('utf-8'),timestamp.encode('utf-8'), digestmod=sha256).digest()) #签名算法为HmacSHA256
    res=requests.post(uri+accessKey+"×tamp="+timestamp+"&signature="+quote(signature),data=json.dumps(data)) #签名信息需要urlEncode
    #获取数据
    user_dict=json.loads(res.text)
    username=user_dict['user_info']['nick'] #获取用户昵称
3. url.py配置
path('dingding_login/',views.ding_url,name='ding_login'),#配置登陆url
path('dingding_back/',views.ding_back,name='ding_back'),

在django内部的认证可以使用remote user,但是发现跳转后不能使用session维持登录状态,考虑使用token,成功后再回来更新

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/303129.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号