序幕
钉钉,学生党的噩梦,是阿里巴巴集团专为中国企业打造的免费沟通和协同的多端平台,帮助中国企业通过系统化的解决方案,全方位提升中国企业沟通和协同效率
创建应用
- 首先注册钉钉开发者平台,成功之后登陆
- 登陆成功,进入
应用开发
- 找到
移动接入应用
,进入登陆
创建扫码登录应用授权
LOGO地址
就是你钉钉三方登陆的图片地址。回调域名
可以自己设置
- 创建成功之后,会给你专属
APPID
,APPKEY
代码接入
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;
},
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"))+"×tamp="+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)