钉钉第三方应用免登录功能开发踩坑指南

钉钉第三方应用免登录功能开发踩坑指南需求场景 在钉钉内打开一些第三方应用 不需要登录 打开后直接登录 当然是有一个绑定操作的 在绑定后可以不登录 未绑定的话 是不行的 未绑定的用户可以选择用户名和密码登录 登录后再绑定 相关文档 钉钉内免登第三方网站 按说明操作到第三步就可以了 就可以得到 dingid openid 了

大家好,我是讯享网,很高兴认识大家。

需求场景

在钉钉内打开一些第三方应用,不需要登录,打开后直接登录。
当然是有一个绑定操作的,在绑定后可以不登录,未绑定的话,是不行的。
未绑定的用户可以选择用户名和密码登录,登录后再绑定。

相关文档

钉钉内免登第三方网站


讯享网

{ 
    errcode: 0, errmsg: 'ok', user_info: { 
    nick: '朱鹏飞', unionid: 'lArDSuIBZpcgiihGOxNPelAiEiE', dingId: '$:LWCP_v1:$D3Dc93cwaQGW30AWh7B97w==', openid: 'liSyiPZzq2gY8aktzXCeF1wQiEiE', main_org_auth_high_level: true } } 

讯享网
讯享网const crypto = require('crypto'); var request = require("request"); export function sign(timestamp) { 
    const appSecret = 'XXXXXXXXXXXXXX'; const hmac = crypto.createHmac('sha256', Buffer.from(appSecret, 'utf8')); // hmac.update(Buffer.from(timestamp + "\n" + 'TestSuiteTicket', 'utf8')); hmac.update(Buffer.from(timestamp + '', 'utf8')); let sign = hmac.digest('base64'); console.log('1', sign); // kXogg18q... // sign = sign.replace("+", "%20").replace("*", "%2A").replace("~", "%7E").replace("/", "%2F") // 钉钉加签最后需要urlencode let sign_urlencode = encodeURIComponent(sign); console.log('2', sign_urlencode) // ceux%2BxGQccRY... return sign_urlencode; } / * 获取钉钉用户信息 * @param code * @returns */ export function getDingdingUserInfo(code: string) { 
    return new Promise((resolve, reject) => { 
    let timestamp = new Date().getTime(); // let timestamp = 63; let signature = sign(timestamp); let url = 'https://oapi.dingtalk.com/sns/getuserinfo_bycode'; url += '?accessKey=XXXXXXXXXXXXXXXXX'; url += '&signature=' + signature; url += '&timestamp=' + timestamp; console.log(`timestamp:${ 
     timestamp}`); console.log(`signature:${ 
     signature}`); console.log(`url:${ 
     url}`); var options = { 
    method: 'POST', url: url, // qs: // { 
    // accessKey: 'dingoaq7eiviborolca0cp', // timestamp: timestamp, // signature: signature // }, headers: { 
    // 'Postman-Token': '4f5713ed-9ae9-41cd-847a-c96eef3ecb34', // 'cache-control': 'no-cache', 'Content-Type': 'application/json;charset=utf-8', // 'content-type': 'multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' }, body: { 
    tmp_auth_code: code }, json: true }; request(options, function (error, response, body) { 
    if (error) throw new Error(error); if (error) { 
    reject(error); } else { 
    console.log('response', response); console.log('body', body); if (body.user_info) resolve(body.user_info) else resolve(body) // resolve(JSON.parse(body)); } // console.log('response', response); // return body; }); }); } 
小讯
上一篇 2025-03-02 15:17
下一篇 2025-02-22 09:31

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/33432.html