浙江政务服务网(含单点登录、mgop、zwlog埋点)对接流程

news2025/11/2 8:44:55

首先由业主单位在IRS平台上注册申请应用,等审批通过后,会给开发商提供开发商账号,使用开发商账号登录IRS平台,就可以进行应用的接口申请和部署了。

一、API接口注册

在IRS平台API管理界面中,新建API,设置生产环境、测试环境的服务地址,GET/POST类型,以及入参和出参。(我司没有定义入参和出参,仅通过在header中增加特定参数,然后通过网关转发api请求。)

注册成功之后,可以进行在线调试,按接口参数定义规则,传入相应参数,调试获取结果。调试成功后,需要上线接口,这样才可以在页面中调用该接口。

备注:经钉钉技术答疑群中相关人员确认,应用可不使用在IRS平台上定义的接口,并自行实现接口并调用后端服务,没有强制规定一定要在IRS上定义API并调用。

二、mgop使用

技术对接文档中已经给出了mgop的基本使用方法,我们要做的就是对mgop进行二次封装,方便使用。

import { mgop } from '@aligov/jssdk-mgop';
const request = function (config) {
    return new Promise((resolve, reject) => {
        mgop({
            api: 'mgop.xxxx.xxxx.xxxxApi', //IRS平台定义的api接口
            host: 'https://mapi.zjzwfw.gov.cn/', // 固定地址
            dataType: 'JSON',
            type: config.mgopApi == 'image' ? 'GET' : 'POST',
            appKey: 'xxxxxx', // 在IRS平台可获取到
            header: {
                'xxxx': 'xxxx', //后端服务所需的请求头参数,可以有多个
                 isTestUrl: '1' //测试环境必填,否则请求的是生产环境地址;
            },
            data: config.params ? config.params : '', //请求体参数
            onSuccess: (data) => {
                console.log('data', data);
                resolve(data.data);
            },
            onFail: (err) => {
                console.log(err, 'err');
            }
        });
    });
};
export default request;

使用mgop无法进行本地调试,会出现跨域错误,只能将代码上传到IRS平台上,然后会得到测试地址,通过测试地址查看接口返回值。 

备注:如果请求头中没有添加isTestUrl参数,则将连接生产环境后端地址。

三、政务网header和footer的引入

按照官方技术文档,在index.html中引入头部js尾部js,页面中将自动显示政务网的头部和底部,包含无障碍、长辈版等硬性上线要求,无需额外功能开发。

备注:本地环境下头部城市切换、无障碍功能不可用,涉及到相关请求接口跨域,发布IRS平台后,即可正常使用。

 1. 长辈版样式修改

切换长辈版的原理是,点击长辈版按钮时,会在在index.html的body标签上增加一个类名,类名可以使用政务网的类名zjzwOLD,也可以自定义类名,内部页面的长辈版样式,可以写在.zjzwOLD下。

长辈版切换触发类名修改的方法(技术文档中已提供):

        <script>
               function zoomin1() {
                // 在此处添加进入老年版方法
                localStorage.setItem('mode', '2');
                _setCookiemode('2');
                // 添加类名,切换按钮
                $('body').addClass('elder'); // 自定义类名
                $('body').addClass('zjzwOLD'); //政务网类名
                $('.zoomin').css('display', 'none');
                $('.zoomout').css('display', 'block');
                // 自定义的操作
            }

            function zoomout1() {
                // 在此处添加进入标准版方法
                localStorage.removeItem('mode', '');
                _setCookiemode('');
                // 删除类名,切换按钮
                $('body').removeClass('elder'); // 自定义类名
                $('body').removeClass('zjzwOLD'); //政务网类名
                $('.zoomout').css('display', 'none');
                $('.zoomin').css('display', 'block');
                // 自定义的操作
            }
            $('.zoomin').click(function () {
                zoomin1();
            });
            $('.zoomout').click(function () {
                zoomout1();
            });
            // 页面初始化调用方法
            getCookieMode(function (res) {
                if (res.data.mode == '2') {
                    zoomin1();
                } else {
                    zoomout1();
                }
            });
        </script>

 2.页面标签设置

<meta name="SiteName" content="浙江省人民政府 浙江政务服务网 IRS上的平台名称" />
        
<meta name="SiteDomain" content="zwfw.zj.gov.cn,zjzwfw.gov.cn,mapi.zjzwfw.gov.cn" />
        
<meta name="SiteIDCode" content="3300000069" />

SiteName的值,最后一个要写IRS上你的应用的名字,写其它的会被驳回。

四、单点登录

1.首先由业主单位在IRS上申请单点登录组件。

2.在前端页面中定义好单点登录回调路由地址,用于获取政务网登录成功后返回的回调信息。

3.将前端代码上传到IRS平台后,需要提交审核,提交审核后,会拿到生产环境的前端页面访问地址,将此地址下的完整回调页面地址发给业主,由业主将回调地址提交申请,用于政务网登录成功后携带参数跳转到此回调地址。申请通过后,会得到一个appId,用于前端页面跳转到政务网登录页。

4.单点登录跳转示例:

公共登录地址是:

https://portal.zjzwfw.gov.cn/uc/sso/login?appId=xxxxxxx&sp=/xxxxxxxx&userType=xxxxxxx

其中appId是业主将回调地址提交申请审核通过后,得到的appId,不是IRS平台上的appId,切记。

sp参数可传可不传,该参数会在政务网登录成功后,做为返回参数放在回调地址上。我们一般用来做为应用内单点登录成功后的页面跳转地址。

userType参数的值有两个:person和legal(个人和法人)

用户在政务网登录成功后,会自动跳转到回调地址页面,并在url地址上携带ticketId和sp参数。后端同学需要使用这个ticketId获取政务网上登录人信息,完成应用内的单点登录。

回调地址示例:

http://www.baidu.com/call/back?sp=xxxxxxx&ticketId=xxxxxxx

 上面的http://www.baidu.com/call/back就是我们上一步我们提供给业主的完整回调地址。redirectUrl是我们跳转政务网登录页时传入的sp参数,ticketId是政务网登录成功后返回的值。

注意:跳转到政务网登录地址的时候,我们如果传入了sp参数,在登录成功返回到回调地址的时候,该参数的键值变成了redirectUrl。取值时不要取错

五、埋点

1.首先需要在index.html中引入zwlog.js链接地址

2.由于埋点要求每个页面都要上报埋点信息,所以将埋点功能的调用放在了App.vue中,监听路由变化,当路由变化时发送埋点信息。

3.经与技术人员核实,可以仅在登录情况下发送埋点数据,未登录情况下可不发送。

4.使用方式(核心代码):

let _this = this;
this.zwlog = new ZwLog({
                    _user_id: userId, //登录用户id(政务网返回)
                    _user_nick: userNick //登录用户昵称(政务网返回)
                });


this.$nextTick(() => {
    this.zwlog.onReady(function () {
    let params = {
        miniapp_start: '$$miniapp_start',//固定值
        page_start: '$$page_start', //固定值
        t2: Time2, //页面启动到加载完成的时间
        t0: Time0, //页面启动到页面响应完成的时间
        userType: 'legal', //或person
        miniAppId:'xxxxx', //IRS上appId
        miniAppName: 'xxxxxx', //IRS上应用名称
        pageId: 'xxxx', //页面id,可以取当前路由path
        pageName: 'xxxx',//页面名称,可以取当前路由名称
        _user_id: 'xxxxx', //当前登录人id
        miniapp_first_user: 'first_user' //如果用户是首次使用该应用,则传入,否则不传
    }
    _this.zwlog.sendPV(params);
})
})

关于t2和t0的计算方法: 

在mounted中获取当前时间,做为页面开始加载时间time1,在watch路由变化时获取当前时间time2,将time2-time1的值做为页面启动到加载完成的时间。但是,该算法仅在页面整体首次加载时有效,因为vue页面除首次加载,之后在切换路由时,页面加载时间可视为0.因此,t2的值在非首次加载时,直接设置为0即可。

t0的算法,在上面nextTick中获取当前时间time3,当页面是首次加载时,t0=time3-time1,当页面是非首次加载时,t0=time3-time2

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

从零构建生产级 AI 应用 ChatWithPDF

前言 目前 AIGC 的浪潮很火&#xff0c;不管你是什么方向的程序员&#xff0c;都可以通过大模型去构建自己的 App&#xff0c;但是搜索资料学习的时候发现&#xff1a; 目前构建 AI 应用的中文资源比较少&#xff0c;大多数都是英文的。教程大多是 demo 级别&#xff0c;没有…

冯喜运:4.18黄金原油晚间行情走势预测及操作策略

【 黄金消息面分析】&#xff1a;周四(4月18日)亚市盘尾&#xff0c;黄金价格宽幅震荡&#xff0c;目前交投于2378.60美元/盎司。金价周三回落0.9%&#xff0c;收报2361.14美元/盎司&#xff0c;美国降息希望减弱造成的压力盖过了中东地缘政治动荡引发的避险需求带来的提振。随…

精确号码比例放通算法的设计与实现

精确号码比例放通算法的设计与实现 引言背景问题定义算法设计1. 数据结构2. 算法流程3. 伪代码4. C语言实现 结论参考文献 引言 随着通信技术的飞速发展&#xff0c;呼叫中心和电信运营商面临着日益增长的呼叫管理需求。在某些情况下&#xff0c;为了确保服务质量或者遵守特定…

社区论坛小圈子小程序源码系统:自定义小程序管理社区圈子软件圈子系统系统开发-做社区圈子丨圈子论坛社区交友系统开源版小程序源码丨

简述 移动互联网的快速发展&#xff0c;微信小程序作为一种新型的应用形态&#xff0c;已经深入到人们的生活中。特别是对于社区论坛类应用&#xff0c;小程序版本可以更好地满足用户快速、便捷获取信息的需求。下面给大家分享一款社区论坛小圈子小程序源码系统。 在这个信息…

C++ | Leetcode C++题解之第30题串联所有单词的子串

题目&#xff1a; 题解&#xff1a; class Solution { public:vector<int> findSubstring(string &s, vector<string> &words) {vector<int> res;int m words.size(), n words[0].size(), ls s.size();for (int i 0; i < n && i m …

【创建型模式】原型模式

一、原型模式概述 原型&#xff08;Prototype&#xff09;模式的定义&#xff1a;用一个已经创建的实例作为原型&#xff0c;通过复制该原型对象来创建一个和原型相同或相似的新对象。在这里&#xff0c;原型实例指定了要创建的对象的种类。用这种方式创建对象非常高效&#xf…

flask 应用程序

flask 程序示例 创建 hello.py 文件&#xff1a; # 导入 Flask 模块。Flask 类的一个对象是 wsgi 应用程序。 from flask import Flask# 创建app对象, Flask构造函数将当前模块的名称(__name__)作为参数。 app Flask(__name__)# route() 函数是一个装饰器&#xff0c;它告诉应…

使用Docker部署Node.js

第一步&#xff1a;在Node.js项目的根目录中新建Dockerfile文件 # 使用官方 Node.js 镜像作为基础镜像 FROM node:latest# 设置工作目录 WORKDIR /usr/src/app# 将项目文件复制到容器中 COPY . .# 将npm源设置为淘宝镜像 RUN npm config set registry https://registry.npmmir…

LeetCode-热题100:101. 对称二叉树

题目描述 给你一个二叉树的根节点 root &#xff0c; 检查它是否轴对称。 示例 1&#xff1a; 输入&#xff1a; root [1,2,2,3,4,4,3] 输出&#xff1a; true 示例 2&#xff1a; 输入&#xff1a; root [1,2,2,null,3,null,3] 输出&#xff1a; false 提示&#xff1a;…

【UE 材质】表面湿润效果

效果 步骤 1. 创建一个材质函数&#xff0c;这里命名为“MF_Weather_Wetness”&#xff0c;打开材质函数添加如下节点 其中输入的默认值分别为&#xff1a; 其中&#xff0c;“Desaturation”节点用于控制饱和度&#xff0c;我们通过给“Fraction”引脚输入一个负值来增加饱和…

个人可以做视频号小店吗?当然可以,但我建议这么做

大家好&#xff0c;我是电商笨笨熊 视频号小店在推出之后就吸引了不少的玩家&#xff0c; 这其中有很多之前做过电商的老玩家&#xff0c;甚至是团队&#xff0c;也有很多是一个人&#xff0c;刚开始做电商的新手小白。 对于电商老玩家来说&#xff0c;做过的可能会更容易上…

正交实验设计及数据处理

文章目录 一、正交实验基础知识介绍1.1 认识正交表1.2 正交表的特点1.3 正交表的分类 二、数据分析 本次内容参考自高等教育本科教材《实验设计与数据处理》 一、正交实验基础知识介绍 1.1 认识正交表 先看一组正交表的构造 这个表的题头代表了这个表的构造&#xff0c;其中…

DRAM发展史

DRAM(Dynamic Random Access Memory,动态随机存取存储器)自其发明以来,历经半个多世纪的发展,已成为现代计算机系统中不可或缺的关键组件。 诞生与早期发展 1966年:IBM公司的罗伯特登纳德(Robert H. Dennard)发明了DRAM。这种新型存储器利用一个晶体管和一个电容器组…

为什么Linus不把国家反诈中心加入Linux内核?

所谓的反诈和反诈 app 都是应用层面的事儿吧。这些东西如果真要集成&#xff0c;也是集成到浏览器中&#xff08;监视你访问的内容和浏览记录&#xff09;&#xff0c;拨号和短信应用中&#xff08;监视通话和短信&#xff09;。还有微信之类的早就集成反诈了。如果你反复向一个…

Web3技术简介:重新定义互联网的未来

引言 在21世纪的数字时代&#xff0c;互联网已成为我们日常生活的不可或缺的一部分。然而&#xff0c;随着区块链和加密技术的快速发展&#xff0c;一个全新的互联网模型——Web3&#xff0c;正逐渐崭露头角。Web3不仅仅是技术的进步&#xff0c;它更是对传统互联网模型的挑战…

亚马逊测评自养号策略:手机与PC结合的重要性

亚马逊测评的核心关键技术在于精心培养买家账号&#xff0c;之所以称之为核心关键&#xff0c;原因在于测评下单的首要条件是拥有一个活跃的买家账号。买家账号并非一次性使用&#xff0c;因此&#xff0c;养号过程显得至关重要。然而&#xff0c;在养号的过程中&#xff0c;很…

sklearn中决策树算法实例--泰坦尼克号人员生存预测

目录 数据集 题目 算法步骤 数据集 下载地址 titanic.csv Yuyi Ye/ML-Decision-Tree - 码云 - 开源中国 (gitee.com) 题目 根据数据集中的数据&#xff0c;预测哪些乘客可以从泰坦尼克号沉船事故中幸免。 算法步骤 import pandas as pd import numpy as np from skle…

AI预测福彩3D第39弹【2024年4月18日预测--第8套算法开始计算第7次测试】

今天咱们继续测试第8套算法和模型&#xff0c;今天是第7次测试&#xff0c;目前的测试只是为了记录和验证&#xff0c;为后续的模型修改和参数调整做铺垫&#xff0c;所以暂时不建议大家盲目跟买~废话不多说了&#xff0c;直接上结果&#xff01; 2024年4月18日3D的七码预测结果…