钉钉扫码登录网站(两种方式实现)

news/2024/5/20 21:51:45/文章来源:https://blog.csdn.net/qq_45533868/article/details/106164512

钉钉扫码登录网站(两种方式实现)

效果:

效果

源代码地址:https://github.com/jellydong/DingQrCodeLogin

动手敲代码!

第一步,钉钉后台配置

参考链接:获取appId及appSecret.

点击进入钉钉开发者平台 的页面,点击左侧菜单的【移动接入应用-登录】,然后点击右上角的【创建扫码登录应用授权】,创建用于免登过程中验证身份的appId及appSecret,创建后即可看到appId和appSecret。

这里因为我是本地开发,所以回调地址直接写:http://localhost:5000/Home/DingLogin
注意哦,回调地址后面是有使用的~

钉钉后台配置

第二部 我们创建一个 ASP.NET Core Web项目
修改appsettings.json

修改appsettings.json,增加钉钉的配置信息:

  "DingDing": {"QrAppId": "QrAppId", //你的钉钉扫码登录AppId"QrAppSecret": "QrAppSecret" //你的钉钉扫码登录AppSecret}
创建完成修改Home控制器的Index页面其实就是钉钉官网文档的代码啦~
@{ViewData["Title"] = "Home Page";
}<div class="text-center"><h1 class="display-4">Welcome</h1><div id="login_container"></div><button type="button" class="btn btn-primary" id="JumpToLogin">跳转登录</button>
</div>@section Scripts
{<script src="https://g.alicdn.com/dingding/dinglogin/0.0.5/ddLogin.js"></script><script type="text/javascript">/** 解释一下goto参数,参考以下例子:* var url = encodeURIComponent('http://localhost.me/index.php?test=1&aa=2');* var goto = encodeURIComponent('https://oapi.dingtalk.com/connect/oauth2/sns_authorize?appid=appid&response_type=code&scope=snsapi_login&state=STATE&redirect_uri='+url)*/var url = "http://localhost:5000/Home/DingLogin";var obj = DDLogin({id: "login_container",//这里需要你在自己的页面定义一个HTML标签并设置id,例如<div id="login_container"></div>或<span id="login_container"></span>goto: encodeURIComponent('https://oapi.dingtalk.com/connect/oauth2/sns_authorize?appid=appid&response_type=code&scope=snsapi_login&state=STATE&redirect_uri=' + url), //请参考注释里的方式style: "border:none;background-color:#FFFFFF;",width: "365",height: "400"});var handleMessage = function (event) {var origin = event.origin;console.log("origin", event.origin);if (origin == "https://login.dingtalk.com") { //判断是否来自ddLogin扫码事件。var loginTmpCode = event.data; //拿到loginTmpCode后就可以在这里构造跳转链接进行跳转了console.log("loginTmpCode", loginTmpCode);window.location.href ="https://oapi.dingtalk.com/connect/oauth2/sns_authorize?appid=appid&response_type=code&scope=snsapi_login&state=STATE&redirect_uri=REDIRECT_URI&loginTmpCode=" +loginTmpCode;}};if (typeof window.addEventListener != 'undefined') {window.addEventListener('message', handleMessage, false);} else if (typeof window.attachEvent != 'undefined') {window.attachEvent('onmessage', handleMessage);}$("#JumpToLogin").click(function(){window.location.href ="https://oapi.dingtalk.com/connect/qrconnect?appid=appid&response_type=code&scope=snsapi_login&state=LoginDing&redirect_uri=http://localhost:5000/Home/DingLogin";});</script>
}

官网介绍了两种方式,Demo把两种方式都放到一个页面了。登录页面效果:
登录页面效果

第三步 回调方法:

第一步的时候我们说回调地址是需要使用的,那么首先我们要有这个地址啊。
因为是Demo,就直接写在HomeController中了

 public string DingLogin(string code, string state){//state 是前端传入的,钉钉并不会修改,比如有多种登录方式的时候,一个登录方法判断登录方式可以进行不同的处理。OapiSnsGetuserinfoBycodeResponse response = new OapiSnsGetuserinfoBycodeResponse();try{string qrAppId= AppConfigurtaionHelper.Configuration["DingDing:QrAppId"];string qrAppSecret = AppConfigurtaionHelper.Configuration["DingDing:QrAppSecret"];if (string.IsNullOrWhiteSpace(qrAppId)||string.IsNullOrWhiteSpace(qrAppSecret)){throw new Exception("请先配置钉钉扫码登录信息!");}DefaultDingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/sns/getuserinfo_bycode");OapiSnsGetuserinfoBycodeRequest req = new OapiSnsGetuserinfoBycodeRequest();req.TmpAuthCode = code;response = client.Execute(req, qrAppId, qrAppSecret); //获取到response后就可以进行自己的登录业务处理了//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx//此处省略一万行代码}catch (Exception e){response.Errmsg = e.Message;}return response.Body;}
登录结果

完成上述步骤后,我们就可以运行项目测试了,钉钉会给我们返回用户的nickopenidunionid,那么,我们可以用这些信息,为所欲为了?
登录结果

总结

之前过于钉钉扫码,总觉得是很高大上的东西(原谅我是个菜鸡),也没有去尝试。
今天看完文档后,用在项目上,然后写了这个Demo,因为我Github没找到合适的,可能是大家觉得简单都不用写了。

1024 节日快乐!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_726722.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站架构发展历程

注&#xff1a;本文摘自李智慧的《大型网站技术架构》 1.初始阶段的网站架构 小型互联网公司一般在最初阶段都是将&#xff1a;应用程序、数据库、文件等所有的资源都在一台服务器上。通常服务器操作系统使用Linux&#xff0c;应用程序使用PHP开发&#xff0c;然后部署在Apach…

c#http服务器源码,C# 自定义 HTTP服务器源码(可用于没有iis的情况下搭建站点)

HTTP服务器源码&#xff0c;可以实现POST模式收发&#xff0c;非常值得参考资源下载此资源下载价格为2D币&#xff0c;请先登录资源文件列表C# WebServer/bins/bins/BizApplication.dll , 21504C# WebServer/bins/bins/ComunicationLayer.dll , 5632C# WebServer/bins/bins/Dem…

tcp网站服务器编写,C#编写简单TCP服务器

【实例简介】【实例截图】【核心代码】using System;using System.Collections.Generic;using System.Linq;using System.Net;using System.Net.Sockets;using System.Text;using System.Threading.Tasks;namespace TCP{class Program{static void Main(string[] args){Socket …

wordpress怎么搜索别人_wordpress深层seo优化技法:自定义栏目和tag标签页面title标题...

seo注重整站优化&#xff0c;也就是希望网站每个页面都参与进来&#xff0c;每个页面都有不同的title标题不重复。对于wordpress默认设置来说&#xff0c;这个基本上是ok的&#xff0c;不需要怎么折腾。但碰到一个问题是&#xff1a;网站栏目及标签页&#xff0c;承载着一些重要…

解决火车头7.6版本对一些https网站的采集报错问题

针对火车头7.6爬取https网站报错System.Net.HttpWebRequest问题的处理方案 1.先看看火车头7.6爬取https网站时出现的报错情况 System.Net.HttpWebRequest 2.废话不多说&#xff0c;先看看解决方案的效果&#xff0c;可以看到已经没有报错了&#xff0c;而且标题也采集到了(其它…

伪静态隐藏域名后缀_seo新手如何注册利于网站优化的域名?立刻分享

如何注册域名&#xff1f;选择比较好的域名服务商&#xff0c;输入合理的组成&#xff0c;选择适合的后缀。选中购买&#xff0c;支付成功后&#xff0c;就算彻底完成域名注册了。1、域名服务商简单来说&#xff0c;域名服务商&#xff0c;就是指能注册域名的地方。不同的服务商…

2012php网站搭建,Windows Server 2012 搭建PHP+MySQL环境

随着windows 8的发布&#xff0c;其服务器版本Windows Server 2012也相继推出&#xff0c;本篇将全面介绍如何在Windows Server 2012搭建phpmysql环境&#xff0c;同时也将介绍如何在Windows Server 2012中设定服务器站点的安全。1.添加IIS服务器角色点击任务栏左下角的“服务器…

mysql宕机时保存sql列表_MySQL的一条慢SQL查询导致整个网站宕机的解决方法

直接切入正题吧:通常来说&#xff0c;我们看到的慢查询一般还不致于导致挂站&#xff0c;顶多就是应用响应变慢不过这个恰好今天被我撞见了&#xff0c;一个慢查询把整个网站搞挂了先看看这个SQL张撒样子&#xff1a;# Query_time:70.472013Lock_time: 0.000078 Rows_sent: 791…

python爬虫自动登录网站_【实战】爬虫自动登录访问授权页面

概述&#xff1a;在人工智能来临的今天&#xff0c;数据显得格外重要。在互联网的浩瀚大海洋中&#xff0c;隐藏着无穷的数据和信息。因此学习网络爬虫是在今天立足的一项必备技能。本路线专门针对想要从事Python网络爬虫的同学而准备的&#xff0c;并且是严格按照企业的标准定…

某网站测试

我得到的只有一个后台网址&#xff0c;首先也就是信息搜集了。在网络空间安全搜索引擎fofa上查询一下&#xff0c;再就是端口扫描 &#xff0c;直接略过说有利用价值的端口&#xff1a;80,81,1433,3389 脆弱点&#xff1a;http://49.xxx.xx.xxx:81/Login/index SQL注入post包(在…

免费申请Let's Encrypt HTTPS 证书(登陆网站和脚本两种方法)

方法一&#xff08;要交互,成功率高&#xff09; 申请过程 1.首先打开SSL For Free (https://www.sslforfree.com/)。 3.此时需要选择验证方式&#xff0c;分别为“自动FTP验证”&#xff08;会要求输入FTP信息&#xff0c;担心安全的还是不要选择这一项&#xff09;、“手动…

php程序如何发布,如何发布小程序 | 使用手册 | 帮助中心 | DouPHP模块化企业建站系统...

一&#xff0c;首先需要注册小程序账号&#xff0c;这分为两种情况1&#xff0c;已经有认证过的公众号登录已认证的公众号&#xff0c;网址为&#xff1a;https://mp.weixin.qq.com&#xff0c;然后点击左侧“小程序”-》“小程序管理”菜单&#xff0c;点击“添加”选择快速注…

宝塔--同一IP下架设多个网站

在内网服务器上搭建另一个网站&#xff0c;之前已经有一个网站使用了88端口&#xff0c;接下来的网站打算使用99端口&#xff0c;然鹅这货死活不让建&#xff1a; 解法是随便加一个域名欺骗面板的验证程序&#xff1a; 提交成功后点开刚新建的站点里面把那个欺骗的假域名删掉…

服务器系统识别网站,基于边缘或服务器的人群检测系统部署主要取决于什么

选择是否部署基于边缘的或基于服务器的人群检测系统取决于应用程序和环境。运营商应考虑人群大小&#xff0c;出口点等&#xff0c;并记住没有“一刀切”的方法。基于边缘的人群分析的好处CrowdVision 首席运营官Stuart Mills表示&#xff0c;在成本方面&#xff0c;视频监控是…

自建网站随机名言警句API也就是一言随机名句api【教程】

自建版的好处就是&#xff0c;api 及经典语句内容完全由自己管控&#xff0c;并且稳定性受自己影响&#xff0c;不受外部网站影响&#xff1b;当然&#xff0c;缺点也很明显了&#xff0c;木有一言的语句多。 一言网&#xff08;Hitokoto.cn&#xff09;隶属于萌创 Team&#x…

一款可留言的甜甜的恋爱计时网站源码

源码介绍&#xff1a; 这是可留言的恋爱计时HTML源码&#xff0c;采用背景图片每日随必应首页更换&#xff0c;评论系统使用了无需后台的Valine官方文档&#xff01; 修改说明&#xff1a; 起始时间&#xff1a;请在 index.html中的计时器模块第131行自行修改 背景图&#…

登录网站后自动退出需重新登录_怎样实现登录?| Cookie or JWT

Q&#xff1a;先问小伙伴们一个问题&#xff0c;登录难吗&#xff1f;“登录有什么难得&#xff1f;输入用户名和密码&#xff0c;后台检索出来&#xff0c;校验一下不就行了。”凡是这样回答的小伙伴&#xff0c;你明显就是产品思维&#xff0c;登录看似简单&#xff0c;用户名…

Nginx: Centos7.3中nginx配置ssl证书,实现https访问网站

1、购买阿里云SSL证书&#xff08;网上有很多教程&#xff0c;这里不做赘述&#xff09; 2、ssl证书控制台申请&#xff0c;绑定已有备案域名&#xff0c;跟着提示做即可&#xff0c;证书审核通过后会出现如下界面 根据自己的需要下载对应的ssl证书配置即可&#xff0c;这里我…

Nginx:Nginx配置SSL证书(申请免费SSL证书)怎样给网站的“http“加上“s“,即网站可以通过“https“访问?

Nginx配置SSL证书&#xff08;申请免费SSL证书&#xff09;怎样给网站的"http"加上"s"&#xff0c;即网站可以通过"https"访问? 当然&#xff0c;首先得有一个已经购买的域名&#xff01; 我现在以阿里云为例&#xff0c;进行配置&#xff01…

Gitlab - 解决访问 gitlab 网站出现 502 报错信息的问题

问题: 访问 gitlab 网站&#xff0c;出现 502 解决方案 先查看运行 gitlab 容器的 id docker ps运行命令 # 容器里启动服务 docker exec id gitlab-ctl reconfigure # 关闭防火墙 systemctl stop firewalld再次访问 gitlab 网站就能成功啦