钉钉企业内部小程序免登录

钉钉自动登录需要两个东西:

         一个是access_token(访问令牌),一个是code(免登录授权码)。

         (企业应用和个人应用的免登授权码均可通过该JSAPI获取。)

dd.getAuthCode({
    success:function(res){
        /*{
            authCode: 'hYLK98jkf0m' //string authCode
        }*/
    },
    fail:function(err){
    }
});


authCode    授权码,有效期5分钟,且只能使用一次
获取之后会得到用户的userid,然后可以通过access_token和userid来获取用户的详细信息

而access_token的获取也是需要两个东西

         一个是AppKey,一个是AppSecret

(AgentId:在创建应用时,系统会自动生成一个AgentId,可用于发送企业会话消息等场景。
    AppKey:在创建应用时,系统会自动分配一对AppKey和AppSecret,该AppKey是应用开发过程中的唯一性标识。
    AppSecret:AppSecret和上面AppKey一同生成,使用AppKey和AppSecret来换取access_token。)

所以流程就是 获取code 然后获取access_token,然后通过这两个获取userid,再通过userid和access_token来获取用户详细信息

 onLoad() {
    dd.getAuthCode({
      success: (res) => {
        var code = res.authCode; //免登授权码
        dd.httpRequest({
          //根据appKey和appsecret来获取Token
          url: "https://oapi.dingtalk.com/gettoken?appkey=???&appsecret=???",
          success: function (res) {
 
            console.log("res:", res);
 
            var access_token = res.data.access_token;
 
            console.log("access_token:", access_token);
 
            dd.httpRequest({
              url: 'https://oapi.dingtalk.com/user/getuserinfo?access_token=' + access_token + '&code=' + code,
              success: function (res) {
 
                console.log("获取得到的用户信息:", res);
 
                dd.httpRequest({
                  url: 'https://oapi.dingtalk.com/user/get?access_token=' + access_token + '&userid=' + res.data.userid,
                  success: function (res) {
 
                     console.log("根据访问Token和用户id得到用户详细信息:", res)
                     console.log("用户Id:", res.data.userid);
                     console.log("用户名", res.data.name);
                     console.log("电话", res.data.mobile);
                     console.log("errmsg:", res.data.errmsg);
                     console.log("角色权限:", res.data.roles);
 
                  },
                });
              },
            });
          },
        });
      },
      fail: (err) =>{
        dd.alert({content: JSON.stringify(err)})
      },
 
    });
 
  }

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值