序幕

钉钉,学生党的噩梦,是阿里巴巴集团专为中国企业打造的免费沟通和协同的多端平台,帮助中国企业通过系统化的解决方案,全方位提升中国企业沟通和协同效率

创建应用

  1. 首先注册钉钉开发者平台,成功之后登陆
  1. 登陆成功,进入应用开发

gitee

  1. 找到移动接入应用,进入登陆

gitee

  1. 创建扫码登录应用授权

gitee

  1. LOGO地址就是你钉钉三方登陆的图片地址。回调域名可以自己设置

gitee

  1. 创建成功之后,会给你专属APPID,APPKEY

gitee

代码接入

  1. Vue

    1
    2
    3
    4
    5
    6
    7
    8
    函数名(){
    var appid = 'APPID'
    var redirect_uri = '钉钉回调地址'
    // 构成url
    var url = 'https://oapi.dingtalk.com/connect/qrconnect?appid='+appid+'&response_type=code&scope=snsapi_login&state=STATE&redirect_uri='+redirect_uri
    // 跳转
    window.location.href = url;
    },
  1. Django

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    #构造钉钉回调
    def ding_back(request):
    #获取code
    code = request.GET.get("code")
    t = time.time()
    #时间戳
    timestamp = str((int(round(t * 1000))))
    appSecret ='钉钉APPkey'
    #构造签名
    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"))+"&timestamp="+timestamp+"&accessKey=钉钉APPID",data=json.dumps(payload),headers=headers)
    #将JSON 字符串解码为 Python 对象
    res_dict = json.loads(res.text)
    #获取用户名
    name = res_dict['user_info']['nick']
    return HttpResponse(name)