c#实现钉钉免登功能

钉钉提供的免登功能

如下

  1. 企业应用免登
  2. ISV应用免登
  3. 微应用后台管理员免登
  4. 第三方WEB网站免登
  5. 第三方WEB网站扫码登录

这里要讲解的是4,5;即第三方Web网站免登:点击网站上登录页面的钉钉图标,显示二维码,然后扫码登录功能;
钉钉Web网站扫码登录文档

一.前期准备
  1. 第三方网站的网址
  2. 第三方网站logo的网址
  3. 操作:
    这里写图片描述
    创建要填写的一些相关信息。授权LOGO地址,建议就放你网站的logo好啦。
    这里写图片描述
    确定之后就会生成APPID和appSecret,先放着。appSecret后面拿取钉钉的用户信息会用到。

通过以上步骤得到:appId,appSecret ,后面会用到(必须值)

二.流程说明

1.流程图
这里写图片描述
2.流程文字说明

  1. 用户点击Web网站上钉钉图标,展示二维码
  2. 用户使用钉钉app,扫码授权
  3. 钉钉服务器往回调地址发送code和state
  4. 在回调地址的action中,由appid,appSecret获取accessToken
  5. 由3中的code和4中的accessToken获取持久授权码persistent_code
  6. 由accessToken和5中得到的persistent_code和openid获取用户授权的sns_token
  7. 再由6中的sns_token获取钉钉用户信息

详情请参考官方文档

三.编码实现

下面的代码因为项目需要除了免登以外,还有一些通讯录的操作,使用者自行选取
注:免登(appid,appsecret)获取的AccessToken与用CorpID和CorpSecret来换取AccessToken不同

1.后台操作代码
using EClaim.Common;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;

namespace EClaim.Service.DingDingHelper
{

    public class DingDingHelper
    {
        //免登必需参数
        private static string appid = "";

        //免登必需参数
        private static string appsecret = "";

        //其他操作必需参数(例如:通讯录)
        private static string corpid = "";

        //其他操作必需参数(例如:通讯录)
        private static string corpsecret = "";


        //由corpid和corpsecret获取accessToken
        public static AccessTokenResult GetAccessToken0()
        {
            string url = "https://oapi.dingtalk.com/gettoken?corpid="+corpid+"&corpsecret="+corpsecret;

            try
            {
                var response = HttpGet(url);
                //Log.LogMsg("DingDing_GetAccessToken0", DateTime.Now, response);

                var result = Newtonsoft.Json.JsonConvert.DeserializeObject<AccessTokenResult>(response);
                return result;
            }
            catch (Exception ex)
            {
                //Log.LogMsg("DingDing_GetAccessToken0_Exception", DateTime.Now, ex.Message);
                throw new Exception(ex.Message);
            }
        }

        /// <summary>
        /// 获取钉钉开放应用的ACCESS_TOKEN(免登功能使用)
        /// </summary>
        /// <returns></returns>
        public static AccessTokenResult GetAccessToken()
        {
            string url = "https://oapi.dingtalk.com/sns/gettoken?appid=" + appid + "&appsecret=" + appsecret;

            try
            {
                var response = HttpGet(url);
                //Log.LogMsg("DingDing_GetAccessToken", DateTime.Now, response);

                var result = Newtonsoft.Json.JsonConvert.DeserializeObject<AccessTokenResult>(response);
                return result;
            }
            catch (Exception ex)
            {
                //Log.LogMsg("DingDing_GetAccessToken_Exception", DateTime.Now, ex.Message);
                throw new Exception(ex.Message);
            }

        }

        /// <summary>
        /// 获取用户授权的持久授权码(免登功能使用)
        /// </summary>
        /// <param name="accessToken"></param>
        ///
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值