需求场景
在钉钉内打开一些第三方应用,不需要登录,打开后直接登录。
当然是有一个绑定操作的,在绑定后可以不登录,未绑定的话,是不行的。
未绑定的用户可以选择用户名和密码登录,登录后再绑定。
相关文档
钉钉内免登第三方网站
{
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 += '×tamp=' + 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; }); }); }

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