钉钉如何跳转PC浏览器免登访问苍穹

1 业务背景
客户使用钉钉免登苍穹,目前苍穹提供与钉钉集成的标准配置方案,该方案是通过钉钉内置浏览器免登苍穹。部分客户使用钉钉免登苍穹时,希望钉钉能自动跳转到PC端浏览器免登苍穹,详见解决方案:
2 解决方案
在了解苍穹免登原理的基础上,可以进一步对此二开,在钉钉客户端访问苍穹登录页时,增加自定义脚本拦截钉钉客户端来源的前端登录请求,然后在构造已授权的免登url并调用钉钉接口打开PC端浏览器页面。
2.1 实现步骤
钉钉原始免登苍穹流程:钉钉点击轻应用url后,触发后端单点及免登检查,第一次不通过重定向会前端登录页,触发前端脚本构造免登授权code追加到url重定向参数后进行第二次重定向,进入到后端免登插件以及用户检查通过后登录系统。基于此编写前端脚本,拦截钉钉客户端的免登流程。
(function () {
var loadScript = function (url, cb) {
var script = document.createElement('script');
script.src = url;
var firstScript = document.getElementsByTagName('script')[0];
firstScript.parentNode.insertBefore(script, firstScript);
// script 加载完毕后调用方法
script.onload = script.onreadystatechange = function () {
if (!this.readyState //这是FF的判断语句,因为ff下没有readyState这个值,IE的readyState肯定有值
|| this.readyState == 'loaded' || this.readyState == 'complete' // 这是IE的判断语句
) {
cb && cb()
}
};
}
// 登录代码加载前调用
window.loginBeforeLoad = function (callback) {
const ua = navigator.userAgent
if (ua.includes('DingTalk')) { // 拦截钉钉的登录请求 - 现场可根据情况修改条件
var jsbridge = "https://g.alicdn.com/dingding/dingtalk-jsapi/3.0.12/dingtalk.open.js";
loadScript(jsbridge, () => {
dd.ready(function () {
// 获取重定向参数
var url = new URL(location.href)
var redirect = url.searchParams.get("redirect")
if (!redirect) {
document.body.innerHTML = '正在跳转到浏览器打开...没有redirect参数'
return
}
var redirect_url = decodeURIComponent(redirect)
var corpid = new URL(redirect_url).searchParams.get("corpid");
if (!redirect) {
document.body.innerHTML = '正在跳转到浏览器打开...没有corpid参数'
return
}
// document.body.innerHTML = '正在跳转到浏览器打开...corpid:' + corpid
// 请求用户一次性授权code
dd.runtime.permission.requestAuthCode({ // 注意钉钉轻应用的回调域名与ip设置
corpId: corpid,
onSuccess: function (res) {
var code = res.code;
// document.body.innerHTML = '正在跳转到浏览器打开...code:' + code
var r = redirect_url;
r.indexOf("&code=") > -1 && (r = res.replace(/&code=/g, "&errorCode="));
r = r.concat("&code=").concat(code) // 未处理hashtag
document.body.innerHTML = '正在跳钉钉如何跳转PC浏览器免登访问苍穹
1 业务背景 客户使用钉钉免登苍穹,目前苍穹提供与钉钉集成的标准配置方案,该方案是通过钉钉内置浏览器免登苍穹。部分客户使用...
点击下载文档文档为doc格式
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
上一篇
已经是第一篇



