钉钉单点登入云星空(一)

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-16浏览:1

钉钉单点登入云星空(一)

主要的交互流程如下:1.点击钉钉中的创建的应用-->2.应用根据获取用户的code与token3.根据code与token再获取该用户的信息->根据用户信息调用云星空的接口返回拼接登入URL;

  1. 钉钉创建应用如下图

    image.webp

image.webp

image.webp

注意点:H5微应用、权限需要全部开通、应用首页地址填写自己开发的地址;

2. 获取code与token

2.1获取code(怎样获取code可以查询钉钉标准文档,以下是我对code的一些理解及我是怎样获取code的)

code是每个用户在点击此应用的时候唯一的一个code,有效时间为5分钟。

获取该code的目标是要和token一起获取该用户的基本信息,如用户名,用户ID等;

获取code代码需要写在上面地址栏目的开发地址我的网址页面是http:127.0.0.1:7219/htmlpage.html

代码如下:

<head>

    <meta charset="UTF-8">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <script src="https://g.alicdn.com/dingding/dingtalk-jsapi/2.11.1/dingtalk.open.js"></script>

    <title>调用接口示例</title>

</head>


    <script>

        function getAuthCode() {

            dd.ready(function () {

                dd.runtime.permission.requestAuthCode({

                    corpId: 'dingac0db83956b84874ffe93478753d9884', // 企业的CorpId

                    onSuccess: function (info) {

                        var code = info.code; // 获取到的授权码

                        console.log("授权码:" + code);

                        document.getElementById('result').innerHTML = code;

                        SendUserCODE(code);

                        // 将授权码发送给WebAPI接口

                        //sendAuthCodeToWebAPI(code);

                    },

                    onFail: function (err) {

                        console.log('requestAuthCode failed:', err);

                        alert("错误调用!" + err);

                    }

                });

            });

        }

    </script>

以上代买会返回一个用户code

2.2获取token

                string corpId = "dingac0*******"; // 钉钉创建的企业的CorpId

                string appKey = "******"; // 钉钉创建的企业应用的AppKey

                string appSecret = "1-*****-a2adfG"; // 钉钉创建企业应用的AppSecret

                string accessTokenUrl = $"https://oapi.dingtalk.com/gettoken?appkey={appKey}&appsecret={appSecret}";

                // 请求钉钉获取AccessToken

                HttpResponseMessage response = await client.GetAsync(accessTokenUrl);

                response.EnsureSuccessStatusCode();

                string accessTokenResponse = await response.Content.ReadAsStringAsync();

                AccessTokenResponse accessTokenObj = JsonConvert.DeserializeObject<AccessTokenResponse>(accessTokenResponse);

                string accessToken = accessTokenObj.access_token;// 在实际应用中从 accessTokenResponse 中解析获取 AccessToken


2.3 根据code与token获取用户名

IDingTalkClient client1 = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/v2/user/getuserinfo");

OapiV2UserGetuserinfoRequest req = new OapiV2UserGetuserinfoRequest();

req.Code = code;

OapiV2UserGetuserinfoResponse rsp = client1.Execute(req, accessToken);

JObject data = JObject.Parse(rsp.Body);

string UserNmae = (string)data["result"]["name"];

Console.WriteLine(rsp.Body);

string KindeeUrl =  CallKingdeeUrl(UserNmae);



钉钉单点登入云星空(一)

主要的交互流程如下:1.点击钉钉中的创建的应用-->2.应用根据获取用户的code与token3.根据code与token再获取该用户的信息->根据用户信息调...
点击下载文档
上一篇:资金付款排程下一篇:存货核算
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息