Foxtable(狐表)用户栏目专家坐堂 → 钉钉获取CODE求助


  共有2554人关注过本帖树形打印复制链接

主题:钉钉获取CODE求助

帅哥哟,离线,有人找我吗?
zcw2764
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:295 积分:4712 威望:0 精华:0 注册:2011/5/28 8:21:00
  发帖心情 Post By:2018/6/22 10:22:00 [显示全部帖子]

先在web\lib文件夹下建立一个js文件,内容如下,将获取的code给叫code的cookie
dd.ready(function () {
    dd.runtime.permission.requestAuthCode({
        corpId:"*****",
        onSuccess:function(result) {
            document.cookie = 'code =  ' + result.code
        },
        onFail:function(err) {}
    })
});
[此贴子已经被作者于2018/6/22 10:57:48编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
zcw2764
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:295 积分:4712 威望:0 精华:0 注册:2011/5/28 8:21:00
  发帖心情 Post By:2018/6/22 10:32:00 [显示全部帖子]

再建一个网页,如login.htm,内容如下:可通过code获取userid

If e.cookies.ContainsKey("code") Then
    code = e.cookies("code")
    
    Dim CorpId As String= "*****" 
    Dim url As String = "https://oapi.dingtalk.com/user/getuserinfo?access_token={0}&code={1}"
    Dim hc As New HttpClient(CExp(url,Functions.Execute("GetAccessToken"),code))
    Dim ret As String = hc.GetData()
    If ret = "" Then '如果失败,再尝试一次
        hc.GetData()
    End If
    
    Dim jo As JObject = JObject.Parse(ret)
    
    If jo("errcode") = "0" Then
        userid = jo("userid")
        ... '验证代码后跳转
        ...

    Else
        With wb.AddMsgPage("","msgpage","获取钉钉用户ID失败","原因:" & vbcrlf & jo("errmsg").ToString)
            .icon= "Warn"
        End With
        e.WriteString(wb.Build)
        Return ""
    End If

Else
    wb.AppendHTML("<script src='http://g.alicdn.com/dingding/open-develop/1.9.0/dingtalk.js'></script>",True) '引入JS-SDK库
    wb.AppendHTML("<script src='./lib/jssdk.js'></script>") '引入脚本文件
     wb.InsertHTML("<meta http-equiv='Refresh' c>") 刷新获取userid
    e.WriteString(wb.Build)
    Return ""
End I
[此贴子已经被作者于2018/6/22 10:42:35编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
zcw2764
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:295 积分:4712 威望:0 精华:0 注册:2011/5/28 8:21:00
  发帖心情 Post By:2018/6/22 14:47:00 [显示全部帖子]

因code码有时效性,在验证正确或失败均删除code这个cookie,下次再获取新的code。验证成功后记住userid等参数,不用频繁去获取钉钉用户临时code码。
[此贴子已经被作者于2018/6/22 15:04:19编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
zcw2764
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:295 积分:4712 威望:0 精华:0 注册:2011/5/28 8:21:00
  发帖心情 Post By:2018/6/22 16:22:00 [显示全部帖子]

根据钉钉开发说明,code不能重复使用,应该是使用一次code获取userid等信息后,不论成功与否均失效,所以最好是直接清除已获得的code码。如果获得了在5分钟内进行第一次使用,可以设置有效时间,但使用后还是将之清除为好。以上为个人理解

 回到顶部