iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >PHP-钉钉扫码登录对接第三方网站
  • 204
分享到

PHP-钉钉扫码登录对接第三方网站

php 2023-08-31 13:08:04 204人浏览 泡泡鱼
摘要

这个小功能对于企业内部的一些自用后台网站还是很常用的,对接也相对简单,记录下对接流程。 开发文档:扫码登录第三方网站 - 钉钉开放平台 先登录钉钉开发者后台,创建扫码登录应用授权 开发者后台统一登录 - 钉钉统一身份认证   生成登录用

这个小功能对于企业内部的一些自用后台网站还是很常用的,对接也相对简单,记录下对接流程。

开发文档:扫码登录第三方网站 - 钉钉开放平台

先登录钉钉开发者后台,创建扫码登录应用授权 开发者后台统一登录 - 钉钉统一身份认证

 

生成登录用的二维码,钉钉提供了两种方式

一种是直接用钉钉提供的页面

https://oapi.dingtalk.com/connect/qrconnect?appid=SuiteKey &response_type=code&scope=snsapi_login&state=STATE&redirect_uri=REDIRECT_URISuiteKey 替换成上图生成列表里的appIdREDIRECT_URI 替换成上图生成列表里的回调地址STATE 可以灵活运用,用于多站点区分

这里重点介绍第二种,大部分会选择第二种将二维码内嵌到自己的页面

        1.要先引入js文件,支持Https

        2. 在页面实例以下js对象

// 刚刚填的回调地址,要用encodeURIComponent处理下var url = encodeURIComponent('回调地址');// Goto参数,也要用encodeURIComponent处理下var goto = encodeURIComponent('https://oapi.dingtalk.com/connect/oauth2/sns_authorize?appid=SuiteKey&response_type=code&scope=snsapi_login&state=STATE&redirect_uri='+url)// 这里需要你在自己的页面定义一个html标签并设置id,要和对象里的id一致// 例如
var obj = DDLogin({ id: "login_container", goto: goto, style: "border:none;background-color:#FFFFFF;", width : "365", height: "400" });

        3.生成二维码后,扫码会获取loginTmpCode,然后通过loginTmpCode获取临时授权码

var handleMessage = function (event) {  var origin = event.origin;  if (origin == "https://login.dingtalk.com") { //判断是否来自ddLogin扫码事件。     var loginTmpCode = event.data;     console.log("loginTmpCode", loginTmpCode);         // 获取到loginTmpCode后就可以在这里构造跳转链接进行跳转了     window.location.href = "https://oapi.dingtalk.com/connect/oauth2/sns_authorize?appid=SuiteKey&response_type=code&scope=snsapi_login&state=STATE&redirect_uri=REDIRECT_URI&loginTmpCode=loginTmpCode" + loginTmpCode;  }};if (typeof window.addEventListener != 'undefined') {    window.addEventListener('message', handleMessage, false);} else if (typeof window.attachEvent != 'undefined') {    window.attachEvent('onmessage', handleMessage);}

以上两种方式扫码后,会302跳转到回调地址,并向url参数追加临时授权码code及state

然后通过code调用授权用户的个人信息根据sns临时授权码获取用户信息 - 钉钉开放平台

可以下载钉钉SDK自带签名功能,也可自己封装,下面是PHP的签名方式

$timestamp = SYS_TIME.'000';// appSecret第一步生成的$s = hash_hmac('sha256', $timestamp, appSecret, true);$signature = base64_encode($s);$query="accessKey=".appId."×tamp=".$timestamp."&signature=".urlencode($signature);$url = "https://oapi.dingtalk.com/sns/getuserinfo_bycode?".$query;// code指临时授权码$params = json_encode(array('tmp_auth_code' => code));// 这个自己封装个curl的方法然后推送$data = Common::curlPost($url, $params, array('Content-Type: application/JSON;charset=utf-8'));// 返回钉钉用户信息return json_decode($data, true);

返回钉钉用户信息后,就根据自己的实际业务场景看怎么处理这些信息了,扫码登录就算完结了, 还有一些根据uNIOnid获取userid获取用户详情的,我用不到,有用到的自己去看下开发文档

 

来源地址:https://blog.csdn.net/qq_41293288/article/details/126724260

--结束END--

本文标题: PHP-钉钉扫码登录对接第三方网站

本文链接: https://www.lsjlt.com/news/385693.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • PHP-钉钉扫码登录对接第三方网站
    这个小功能对于企业内部的一些自用后台网站还是很常用的,对接也相对简单,记录下对接流程。 开发文档:扫码登录第三方网站 - 钉钉开放平台 先登录钉钉开发者后台,创建扫码登录应用授权 开发者后台统一登录 - 钉钉统一身份认证   生成登录用...
    99+
    2023-08-31
    php
  • 第三方网站微信登录java代码实现
    前两个星期在公司中的项目加上了微信登录、绑定的功能,在这里做个记录!一、开发前知识微信开放平台与微信公众平台的区别 1.1 微信公众平台:   ① 地址:https://mp.weixin.qq.com/cgi-bin/loginpage&...
    99+
    2023-05-31
    java 网站 微信登录
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作