钉钉PC端使用 Blazor WebAssembly 读取用户信息

Posted 707wk

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了钉钉PC端使用 Blazor WebAssembly 读取用户信息相关的知识,希望对你有一定的参考价值。

功能: 在钉钉内打开 Blazor WebAssembly 网站时, 读取钉钉当前的用户信息, 并显示启用的功能列表

版本: .NET6

界面库: Ant Design Blazor

基础要求:

1. 让公司管理员设置自己为钉钉开发者

2. 下载 钉钉RC版 作为调试工具, 下载地址: https://open.dingtalk.com/document/resourcedownload/h5-debug

3. 钉钉开发者后台 -> 企业内部开发 -> 新建H5微应用. 在开发管理中设置服务器出口IP、应用首页地址、PC端首页地址. 在权限管理中开通 调用OpenApp专有API时需要具备的权限 权限

4. 有固定公网IP, 建议使用域名绑定

5. 已经使用钉钉的服务端SDK搭建了服务端

 

在项目的 index.html 文件的 body 里添加

 <script src="https://g.alicdn.com/dingding/dingtalk-jsapi/3.0.12/dingtalk.open.js"></script>
 
     <script>
         // 获取钉钉免登码
         window.GetUserAuthCode = (corpId) => 
             dd.ready(function () 
                 dd.runtime.permission.requestAuthCode(
                     corpId: corpId,
                     onSuccess: function (result) 
                         //alert(result.code);
                         DotNet.invokeMethodAsync(\'ERPQueryTool\', \'StaticDingTalkLogined\', result.code);
                         /*
                             code: \'hYLK98jkf0m\' //string authCode
                         */
                     ,
                     onFail: function (err)  
 
                 );
             );
         ;
 
         // 在钉钉内下载文件
         window.DingTalkDownloadFile = (url, name) => 
             dd.ready(function () 
 
                 dd.biz.util.downloadFile(
                     url: url, //要下载的文件的url
                     name: name, //定义下载文件名字
                     onProgress: function (msg) 
                         // 文件下载进度回调
                     ,
                     onSuccess: function (result) 
                         /*
                           true
                         */
                     ,
                     onFail: function ()  
                 )
 
             );
         ;
 
         // 在钉钉内下载后打开保存目录
         window.DingTalkOpenFolderAfterDownloadFile = (url, name) => 
             dd.ready(function () 
 
                 dd.biz.util.downloadFile(
                     url: url, //要下载的文件的url
                     name: name, //定义下载文件名字
                     onProgress: function (msg) 
                         // 文件下载进度回调
                     ,
                     onSuccess: function (result) 
                         /*
                           true
                         */
                         dd.biz.util.openLocalFile(
                             url: url, //本地文件的url,指的是调用DingTalkPC.biz.util.downloadFile接口下载时填入的url,配合DingTalkPC.biz.util.downloadFile使用
                             onSuccess: function (result) 
                                 /*
                                   true
                                 */
                             ,
                             onFail: function ()  
                         );
                     ,
                     onFail: function ()  
                 );
 
             );
 
         ;
     </script>

在项目的 MainLayout.razor 里添加

    private static Action<string>? LoginedAction;

    protected override async void OnAfterRender(bool firstRender)
    
        base.OnAfterRender(firstRender);

        if (!firstRender)
        
            return;
        

        LoginedAction = DingTalkLogined;

        StartDingTalkLogin();

    

    // 调用JS方法, 获取 authCode
    private async void StartDingTalkLogin()
    
        await JS.InvokeAsync<string>("GetUserAuthCode", Tool.LoginHelper.DingTalkCorpId);
    

    // JS方法回调
    [JSInvokable]
    public static void StaticDingTalkLogined(string authCode)
    
        LoginedAction?.Invoke(authCode);
    

    // 根据 authCode 获取用户信息
    private async void DingTalkLogined(string authCode)
    
        // 调用服务端获取 authCode 对应的用户信息

        // 获取启用的功能列表
    

最终效果:

参考资料:

https://open.dingtalk.com/document/orgapp/read-before-development

https://antblazor.com/zh-CN/docs/introduce

jenkins 集成钉钉机器人通知

公司使用钉钉做为公司内部的通讯工具,所以想通过Jenkins发布完成以后通过钉钉来通知大家,研究发现钉钉提供机器人,所以我把机器人集成进来通知相关人员。

1.创建通知人群组,添加机器人(钉钉默认自带了配置好的机器人,但是没有Jenkins机器人);

注意:钉钉机器人的配置需要在PC端完成;
技术分享图片

2.获取自定义机器人webhook

技术分享图片

3.jenkins 安装"Dingding[钉钉] Plugin"插件;

技术分享图片

4.插件安装完成后,创建/修改任务中,在"构建后的操作"->"增加构建后操作步骤"中,选择"钉钉通知器配置"

技术分享图片
注意: Jenkins URL配置中需要在最后添加"/",要不然会导致拼接的url出错,这里填写有问题会导致无法从钉钉中跳转到Jenkins任务;

5.点击构建,钉钉会立马收到消息,点击消息跳转到对应的任务

技术分享图片

以上是关于钉钉PC端使用 Blazor WebAssembly 读取用户信息的主要内容,如果未能解决你的问题,请参考以下文章

Blazor技术入门

jenkins 集成钉钉机器人通知

巧用钉钉群机器人定时推送单图文消息

钉钉APP配置自动告警

企业内部应用如何开发?

vue中,使用手机钉钉扫描二维码登录