快速登录界面关于如何登录以及多账号列表解析以及config配置文件如何读取以及JsLogin模块与SdoLogin模块如何通信(4)

news2024/11/20 10:31:21

1、### Jslogin模块与前端以及JsLogin模块与Sdologin的交互

配置文件的读取:

	<CompanyIdForQq value="301"/>	
	<CompanyIdForWx value="300"/>
	<CompanyIdForWb value="302"/>
	<qq value="https://graph.qq.com/oauth2.0/authorize?response_type=code&amp;client_id=101531594&amp;redirect_uri=https://mygm.sdo.com/v1/oauth/authorize&amp;state=qq" />
	<wx value="https://open.weixin.qq.com/connect/qrconnect?response_type=code&amp;scope=snsapi_login&amp;appid=wxa0ef5c72c3732d26&amp;redirect_uri=https://mygm.sdo.com/v1/oauth/authorize&amp;state=wx#wechat_redirect" />
	<wb value="https://api.weibo.com/oauth2/authorize?client_id=3349601784&amp;redirect_uri=https://mygm.sdo.com/v1/oauth/authorize&amp;state=wb" />

假设url:

https://graph.qq.com/oauth2.0/authorize?response_type=code&client_id=101531594&redirect_uri=https://mygm.sdo.com/v1/oauth/authorize&state=qq

然后代码里面调用:

tstring qq_url =  CConfigManager::GetInstance()->GetClientInfoValue(L"qq");

最后被转义,所以url要被设定为:

https://graph.qq.com/oauth2.0/authorize?response_type=code&client_id=101531594&redirect_uri=https://mygm.sdo.com/v1/oauth/authorize&state=qq

与前端交互接口的注册:

SystemAction::SystemAction()
{
	TRACET();
	m_mapFunctions["Minimize"]			=	&SystemAction::Minimize;
	m_mapFunctions["Close"]				=	&SystemAction::Close;
	m_mapFunctions["Login"]				=	&SystemAction::Login;
	m_mapFunctions["IeResize"]			=	&SystemAction::IeResize;
	m_mapFunctions["CloseAgreementIE"]	=	&SystemAction::CloseAgreementIE;
	m_mapFunctions["OpenAgreementIE"]	=	&SystemAction::OpenAgreementIE;
	m_mapFunctions["IeWResize"]			=	&SystemAction::IeWResize;
	m_mapFunctions["IeHResize"]			=	&SystemAction::IeResize;
	m_mapFunctions["OpenShunWangloginIE"] =	&SystemAction::OpenShunWangloginIE;
	m_mapFunctions["CloseShunWangloginIE"]=	&SystemAction::CloseShunWangloginIE;
	m_mapFunctions["CloseAreaSetting"]  =	&SystemAction::CloseAreaSetting;
	m_mapFunctions["IeHReset"]			=	&SystemAction::IeHReset;
	m_mapFunctions["FeiHuoLoginResult"]	=	&SystemAction::FeiHuoLoginResult;
	m_mapFunctions["onCommonGeetestResult"]	=	&SystemAction::onCommonGeetestResult;
	
	//三方打开ie关闭ie
	/*m_mapFunctions["OpenThirdloginIE"] =	&SystemAction::OpenThirdloginIE;*/
	m_mapFunctions["CloseThirdloginIE"]=	&SystemAction::CloseThirdloginIE;
	通知前端登录器调用
	//m_mapFunctions["NotifyThirdlogin"]=		&SystemAction::NotifyThirdlogin;
	m_mapFunctions["IsThirdLogin"]=	&SystemAction::IsThirdLogin;
}

与前端交互接口定义:

HRESULT SystemAction::CloseThirdloginIE( DISPPARAMS* pDispParams, VARIANT* pVarResult, EXCEPINFO* pExcepInfo, unsigned int* puArgErr,EXCEPINFO* pInternalExcepInfo)
{
	TRACET();

	ThirdloginReq request;
	request.m_flag = 0;

	LPWSTR  _ticket = pDispParams->rgvarg[0].bstrVal;
	wcsncpy_s(request.ticket, _ticket, _countof(request.ticket)-1);

	if(!CJsLoginExternal::GetInstance()->SendMessage(&request))
	{
		TRACEW(_T("Send CloseThirdloginIE failed."));
		return S_FALSE;
	}

	//MessageRsp response;
	//if(!CJsLoginExternal::GetInstance()->WaitResponse(&request, &response, DEFAULT_TIMEOUT))
	//{
	//	TRACEW(_T("Send CloseShunWangloginIE timeout"));
	//	return S_FALSE;
	//}

	return S_OK;
}

获取前端JS代码调用接口传过来的参数:

在这里插入图片描述

然后使用CJsLoginExternal::GetInstance()->SendMessage(&request)把消息发送给SdoLogin

在这里插入图片描述

	case SDOL_CMD_THIRD_DIALOG_REQ:
		return new ThirdloginReq();

在这里插入图片描述

LRESULT CSDOLApp::OnThirdDialogLogin(WPARAM wParam, LPARAM lParam)
{
	TRACET();

	ThirdloginReq* pReq = (ThirdloginReq*)wParam;
	ASSERT_RETURN_VALUE(pReq, -1);

	wchar_t* ticket = pReq->ticket;
	
	//m_flag为0时候可以验证QQ登录
	if (pReq->m_flag == 0)
	{
		CDataReportMaker::GetInstance()->OnCollecUserOperated("0x018");
		tstring phone, smsCode;
		CAuthenManager::GetInstance()->AsyncForThirdLogin(StringHelper::Format(ticket),all_commpany_id, phone, smsCode,"1");//区分老旧版本:extend=1表示新版本
		
		if(GetIetDlg())
		{
			GetIetDlg()->OnBtnClose();
		}

		HWND hwd = CSDOLApp::GetInstance()->GetGameWnd();
		ShowWindow(hwd,SW_RESTORE);
	}

	m_LoginModule.SendSimpleResponse(pReq, 0);

	return 0;
}

在这里插入图片描述

JsLogin模块参数传给前端:

HRESULT SystemAction::IsThirdLogin(DISPPARAMS* pDispParams, VARIANT* pVarResult, EXCEPINFO* pExcepInfo, unsigned int* puArgErr,EXCEPINFO* pInternalExcepInfo)
{
	TRACET();
	pVarResult->vt = VT_BOOL;
	pVarResult->boolVal = True;
	return S_OK;
}

在这里插入图片描述

前端调用JsLogin模块方法:web页面是在相同的浏览器环境内打开的 向这个环境内注入了方法是可以在拿到三方返回的code之后前端通过该方法把code传递给JsLogin模块的。

在这里插入图片描述

当出现问题根据调试工具调试:

在这里插入图片描述

根据传给前端的参数为false:

在这里插入图片描述

然后调用System.Action.CloseThirdLoginIE(“ticket”):

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

使用Notepad++编辑器,安装AnalysePlugin搜索插件

概述 是一款非常有特色的编辑器&#xff0c;Notepad是开源软件&#xff0c;Notepad中文版可以免费使用。 操作步骤&#xff1a; 1、在工具栏 ->“插件”选项。 2、勾选AnalysePlugin选项&#xff0c;点击右上角“安装”即可。 3、 确认安装插件 4、下载插件 5、插件已安装…

【Linux】resolv.conf 文件

resolv.conf resolv.conf 文件 是 DNS 的 client 端使用的文件&#xff0c;用于设置 DNS 服务器的 ip 地址以及 DNS 域名&#xff0c;还可以配置域名搜索顺序等等。主要包含如下关键字&#xff1a;nameserver、domain、search、sortlist、options。设置的格式都是 关键字空格 …

Java期末复习题之抽象类、接口

点击返回标题->23年Java期末复习-CSDN博客 第1题. 首先设计一个学生抽象类Student&#xff0c;其数据成员有name(姓名)、age(年龄)和degree(学位)&#xff0c;以及一个抽象方法show()。然后由Student类派生出本科生类Undergraduate和研究生类Graduate&#xff0c;本科生类Un…

使用ES6 async awai t进行异步处理

我们往往在项目中会遇到这样的业务需求&#xff0c;就是首先先进行一个ajax请求&#xff0c;然后再进行下一个ajax请求&#xff0c;而下一个请求需要使用上一个请求得到的数据&#xff0c;请求少了还好说&#xff0c;如果多了&#xff0c;就要一层一层的嵌套&#xff0c;就好像…

AI自动生成代码工具

AI自动生成代码工具是一种利用人工智能技术来辅助或自动化软件开发过程中的编码任务的工具。这些工具使用机器学习和自然语言处理等技术&#xff0c;根据开发者的需求生成相应的源代码。以下是一些常见的AI自动生成代码工具&#xff0c;希望对大家有所帮助。北京木奇移动技术有…

小航助学2023年9月GESP_Scratch一级真题(含题库答题软件账号)

需要在线模拟训练的题库账号请点击 小航助学编程在线模拟试卷系统&#xff08;含题库答题软件账号 单选题3.00分 删除编辑附件图文 答案:C 第1题我们通常说的“内存”属于计算机部件中的( ) A、输出设备B、输入设备C、存储设备D、打印设备 答案解析&#xff1a; 单选题3…

Kubernetes(K8s 1.27.x) 快速上手+实践,无废话纯享版(视频笔记)

视频源&#xff1a;1.03-k8s是什么&#xff1f;_哔哩哔哩_bilibili 1 基础知识 1.1 K8s 有用么&#xff1f; K8s有没有用 K8s要不要学&#xff1f; 参考资料: https://www.infoq.com/articles/devops-and-cloud-trends-2022/?itm_sourcearticles_about_InfoQ-trends-report…

FPGA实现电机位置环、速度环双闭环PID控制

一、设计思路 主要设计思路就是根据之前写的一篇FPGA实现电机转速PID控制&#xff0c;前面已经实现了位置环的控制&#xff0c;思想就是通过电机编码器的当前位置值不断地修正PID去控制速度。 那为了更好的实现控制&#xff0c;可以在位置环后加上速度环&#xff0c;实现电机位…

thinkphp lists todo

来由&#xff1a; 数据库的这个字段我想返回成&#xff1a; 新奇的写法如下&#xff1a; 逻辑层的代码&#xff1a; public function goodsDetail($goodId){$detail $this->good->where(id, $goodId)->hidden([type_params,user_id])->find();if (!$detail) {ret…

LinuxBasicsForHackers笔记 -- 进程管理

进程是一个正在运行和使用资源的程序。 Linux 内核是操作系统的内核&#xff0c;几乎控制着一切&#xff0c;在创建进程时&#xff0c;它会按顺序为每个进程分配一个唯一的进程 ID (PID)。 查看进程 ps – 用于在命令行查看哪些进程处于活动状态。单独使用 ps 命令并不能真正…

线上盲盒扭蛋机,开启潮玩新玩法

盲盒近几年非常火爆&#xff0c;因其不确定性、随机性吸引着盲盒爱好者&#xff0c;引起了潮玩文化风潮。扭蛋机是盲盒的一种新抽取模式&#xff0c;线上扭蛋机小程序在具有盲盒的优势外&#xff0c;还具有较大吸引力&#xff0c;用户参与率较高&#xff0c;这也使得扭蛋机成为…

Spring 依赖注入的三种方式优缺点

小王学习录 前言属性注入1. 属性注入的优点2. 属性注入的缺点 Setter注入Setter注入的优点Setter注入的缺点 构造方法注入1. 构造方法的优点 总结补充Aurowired注解和Resource注解的区别 前言 在前面的文章中介绍了基于注解的方式将Bean存储到Spring中, 接下来介绍如何基于注解…

11.Java安卓程序设计-基于SSM框架的Android平台健康管理系统的设计与实现

摘要 随着人们生活水平的提高和健康意识的增强&#xff0c;健康管理系统在日常生活中扮演着越来越重要的角色。本研究旨在设计并实现一款基于SSM框架的Android平台健康管理系统&#xff0c;为用户提供全面的健康监测和管理服务。 在需求分析阶段&#xff0c;我们明确了系统的…

LLM微调(三)| 大模型中RLHF + Reward Model + PPO技术解析

本文将深入探讨RLHF&#xff08;Reinforcement Learning with Human Feedback&#xff09;、RM&#xff08;reward model&#xff09;和PPO&#xff08;Proximal Policy Optimizer&#xff09;算法的概念。然后&#xff0c;通过代码演示使用RLHF训练自己的大模型和奖励模型RM。…

上网监控软件——安全与隐私的平衡

网络已经成为人们生活和工作中不可或缺的一部分。然而&#xff0c;随着网络使用的普及&#xff0c;网络安全问题也日益突出。上网监控软件作为网络安全领域的一个重要组成部分&#xff0c;在保护企业和家庭网络安全方面发挥着重要作用。 本文将探讨上网监控软件的背景、功能、优…

Java第二十一章

一.网络程序设计基础 1.网络协议 网络协议规定了计算机之间连接的物理、机械(网线与网卡的连接规定)、电气(有效的电平范围)等特征&#xff0c;计算机之间的相互寻址规则&#xff0c;数据发送冲突的解决方式&#xff0c;长数据如何分段传送与接收等内容.就像不同的国家有不同的…

AI烟火识别智能视频分析系统解决方案

引言 随着城市化进程的加快和高科技的迅猛发展&#xff0c;传统的消防系统逐渐显露出局限性。在这种背景下&#xff0c;AI烟火识别智慧消防解决方案应运而生&#xff0c;它融合了最新的AI技术&#xff0c;旨在提高火灾的预防、检测、应对和控制能力&#xff0c;保护人民生命财…

Sbatch, Salloc提交任务相关

salloc 申请计算节点&#xff0c;然后登录到申请到的计算节点上运行指令&#xff1b; salloc的参数与sbatch相同&#xff0c;该部分先介绍一个简单的使用案例&#xff1b;随后介绍一个GPU的使用案例&#xff1b;最后介绍一个跨节点使用案例&#xff1b; 首先是一个简单的例子&a…

基于springboot实现的仿天猫商城项目

一、系统架构 前端&#xff1a;jsp | js | css | jquery 后端&#xff1a;springboot | mybatis-plus 环境&#xff1a;jdk1.7 | mysql | maven 二、代码及数据库 三、功能介绍 01. web端-首页 02. web端-商品查询 03. web端-商品详情 04. web端-购物车 05. web端-订单…

【网络安全】-《网络安全法》制定背景和核心内容

文章目录 1. 背景介绍1.1 数字时代的崛起1.2 中国网络安全形势 2. 《网络安全法》核心内容2.1 法律适用范围2.2 个人信息保护2.3 关键信息基础设施保护2.4 网络安全监管和应急响应2.5 网络产品和服务安全管理2.6 法律责任和处罚 3. 法律的意义和影响3.1 维护国家安全3.2 保护个…