以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  钉钉获取CODE求助  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=120706)

--  作者:linyunu
--  发布时间:2018/6/22 10:01:00
--  钉钉获取CODE求助
 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:新建文本文档 (2).txt


此主题相关图片如下:uc截图20180622095614.png
按此在新窗口浏览图片


--  作者:有点甜
--  发布时间:2018/6/22 10:22:00
--  

类似的js-sdk的调用,参考

 

http://www.foxtable.com/mobilehelp/scr/0247.htm

 


--  作者:zcw2764
--  发布时间: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
--  发布时间: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编辑过]

--  作者:linyunu
--  发布时间:2018/6/22 10:54:00
--  
非常感谢!我试试看
--  作者:linyunu
--  发布时间:2018/6/22 14:36:00
--  不存在的临时授权码
请问第一次正确调用了,退出再打开显示【不存在的临时授权码】这个怎么解决
--  作者:有点甜
--  发布时间:2018/6/22 14:46:00
--  

你是如何调用的?

 

当您通过临时授权码(tmp_auth_code)和套件token(suite_access_token)去换取永久授权码(permanent_code)之时,需要保证suite_access_token,tmp_auth_code都没有过期。


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

--  作者:linyunu
--  发布时间:2018/6/22 15:17:00
--  
获取的这个CODE有效期是5分钟

是不是可以在把code写入cookie的时候一起写上失效时间呢?

如果可以js 应该怎么改

先在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 15:39:00
--  

js操作cookie,参考,写一个setCookie函数调用。

 

https://www.baidu.com/baidu?wd=js+cookie&tn=monline_4_dg