首页 > 其他分享 >钉钉PC端使用 Blazor WebAssembly 读取用户信息

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

时间:2023-05-08 19:35:01浏览次数:56  
标签:function WebAssembly name url authCode dd PC Blazor 下载

功能: 在钉钉内打开 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 里添加

 1 <script src="https://g.alicdn.com/dingding/dingtalk-jsapi/3.0.12/dingtalk.open.js"></script>
 2 
 3     <script>
 4         // 获取钉钉免登码
 5         window.GetUserAuthCode = (corpId) => {
 6             dd.ready(function () {
 7                 dd.runtime.permission.requestAuthCode({
 8                     corpId: corpId,
 9                     onSuccess: function (result) {
10                         //alert(result.code);
11                         DotNet.invokeMethodAsync('ERPQueryTool', 'StaticDingTalkLogined', result.code);
12                         /*{
13                             code: 'hYLK98jkf0m' //string authCode
14                         }*/
15                     },
16                     onFail: function (err) { }
17 
18                 });
19             });
20         };
21 
22         // 在钉钉内下载文件
23         window.DingTalkDownloadFile = (url, name) => {
24             dd.ready(function () {
25 
26                 dd.biz.util.downloadFile({
27                     url: url, //要下载的文件的url
28                     name: name, //定义下载文件名字
29                     onProgress: function (msg) {
30                         // 文件下载进度回调
31                     },
32                     onSuccess: function (result) {
33                         /*
34                           true
35                         */
36                     },
37                     onFail: function () { }
38                 })
39 
40             });
41         };
42 
43         // 在钉钉内下载后打开保存目录
44         window.DingTalkOpenFolderAfterDownloadFile = (url, name) => {
45             dd.ready(function () {
46 
47                 dd.biz.util.downloadFile({
48                     url: url, //要下载的文件的url
49                     name: name, //定义下载文件名字
50                     onProgress: function (msg) {
51                         // 文件下载进度回调
52                     },
53                     onSuccess: function (result) {
54                         /*
55                           true
56                         */
57                         dd.biz.util.openLocalFile({
58                             url: url, //本地文件的url,指的是调用DingTalkPC.biz.util.downloadFile接口下载时填入的url,配合DingTalkPC.biz.util.downloadFile使用
59                             onSuccess: function (result) {
60                                 /*
61                                   true
62                                 */
63                             },
64                             onFail: function () { }
65                         });
66                     },
67                     onFail: function () { }
68                 });
69 
70             });
71 
72         };
73     </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

Top Bottom Top Bottom

标签:function,WebAssembly,name,url,authCode,dd,PC,Blazor,下载
From: https://www.cnblogs.com/707wk/p/17382895.html

相关文章

  • lazarus 2.2.6+FPC 3.2.2绿色整合版 for linux aarch64
    lazarus2.2.6+FPC3.2.2绿色整合版forlinuxaarch64https://www.cnblogs.com/qiufeng2014/p/17213806.html已集成常见控件及修正了我开发遇到的Bug,这个版本包含x86_64win64交叉编译环境,有兴趣的可以下载玩玩。这个整合版的特点:一、修复代码编辑不能输入中文的Bug二、修......
  • NPC五电平逆变器。
    NPC五电平逆变器。并网逆变器PQ控制。通过功率闭环控制,实现并网单位功率因数,即并网电流与网侧电压同相位。为了得到电网电网相位,采用基于双二阶广义积分器的锁相环,该锁相环可以快速准确无误的得到电网相位。且在初始阶段,就可以得到电网相位,比Matlab自带的锁相环要快很多。并网有功......
  • USB 控制器 piix3-uhci, piix4-uhci, ehci, ich9-ehci1, vt82c686b-uhci, pci-ohci, n
    在折腾TrueNASSCALE虚拟机的USBPassthrough的时候发现有很多不同种类的USBController,研究了一下发现他们有这些异同点piix3-uhci和piix4-uhci是虚拟的USB1.1控制器,可被用于QEMU和VirtualBox虚拟机中,它们有不同的版本号,但功能上差别不大。ehci是USB2.0......
  • Note - 速通 NPC?有限域算术!
    浅谈有限域在OI中的一些应用(2023国家集训队论文),戚朗瑞.   \(\textbf{Example1.}\)  给定一张有向图\(G=(V,E)\),\(|V|=n\),\(|E|=m\).要求找到一条最长的简单路径.保证最长路径长度\(k\lln\).  \(\textbf{Solution1.}\)  存在显然的\(\mathcal......
  • 2023 xjtupc 西交校赛
    A签到,\(O(1)\)。C++Code#include"bits/stdc++.h"usingnamespacestd;usingi64=longlong;intmain(){ios::sync_with_stdio(false);cin.tie(nullptr);intn;cin>>n;cout<<(n<=6?"water"......
  • 界面控件DevExpress Blazor UI v22.2亮点:全新的Window组件
    DevExpress拥有.NET开发需要的所有平台控件,包含600多个UI控件、报表平台、DevExpressDashboardeXpressApp框架、适用于VisualStudio的CodeRush等一系列辅助工具,该组件拥有众多新产品和数十个具有高影响力的功能,可为桌面、Web和移动应用提供直观的解决方案,全面解决各种使用场......
  • 三电平NPC逆变器矢量控制(SVPWM)matlab2021a
    三电平NPC逆变器矢量控制(SVPWM)matlab2021a采用矢量控制,大扇区、小扇区、矢量作用时间等均用程序编写,可以得到马鞍波调制波形逆变器输出三电平相电压波形,五电平线电压波形,经过滤波器后,可以得到对称的三相电压,电流ID:7440684413273739......
  • 二极管钳位型NPC逆变器不平衡负载仿真
    二极管钳位型NPC逆变器不平衡负载仿真Matlab2021a采用SPWM调制,双环PI参与控制,逆变器连接LCL滤波器,连接不平衡负载,负载参数可调。可以得到输出线电压为五电平的电压波形,滤波后可以得到对称三相电压波形,电流波形可以根据不平衡负载而发生变化。ID:9925680421021245......
  • 光伏NPC逆变并网仿真matlab2021a
    光伏NPC逆变并网仿真matlab2021a光伏阵列参数已设定,采用mppt算法(扰动观察法);主电路采用二极管钳位型NPC逆变器;采用双闭环控制,电压电流环,PI调节参与;采用正弦脉冲宽度调制;加设LCL滤波器,并入电网。逆变器输出端可以得到五电平线电压波形,滤波后输出对称三相电压波形,稳定后,得到对称三相......
  • FastRPC资料汇总
     DEFCONSafeMode-SlavaMakkaveev-Pwn2OwnQualcommcomputeDSPforfunandprofit.pdf https://github.com/raspberrypi/linux/blob/stable/drivers/misc/fastrpc.c external_fastrpc/fastrpc_apps_user.cat556fa85d14bfdac3c211e27cec9b975f9efb50c6·Evol......