快速登錄界面關于如何登錄以及多賬號列表解析以及config配置文件如何讀取以及JsLogin模塊與SdoLogin模塊如何通信(4)

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.pswp.cn/news/208996.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/208996.shtml
英文地址,請注明出處:http://en.pswp.cn/news/208996.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

freertos統計任務運行時間和堆棧使用情況(快速應用篇)

這里寫自定義目錄標題 背景配置FreeRTOSCconfig.h統計時鐘源任務中打印 背景 本文直接講解如果快速實現freertos打印任務運行時間&#xff0c;堆棧使用情況等調試信息&#xff0c;不講解原理。 配置 FreeRTOSCconfig.h 增加以下代碼&#xff1a; #define configUSE_TRACE_…

git clone 命令

git clone 是一個用于克隆&#xff08;clone&#xff09;遠程 Git 倉庫到本地的命令。 git clone 可以將一個遠程 Git 倉庫拷貝到本地&#xff0c;讓自己能夠查看該項目&#xff0c;或者進行修改。 git clone 命令&#xff0c;你可以復制遠程倉庫的所有代碼和歷史記錄&#xf…

template

類型&#xff1a; string 詳細&#xff1a; 一個字符串模板作為 Vue 實例的標識使用。模板將會替換掛載的元素。掛載元素的內容都將被忽略&#xff0c;除非模板的內容有分發插槽。 如果值以 # 開始&#xff0c;則它將被用作選擇符&#xff0c;并使用匹配元素的 innerHTML 作為…

深入了解 Axios 攔截器

深入了解 Axios 攔截器 本文將向您介紹什么是 Axios 攔截器以及如何使用它們。通過分步指南和示例代碼&#xff0c;您將學習如何使用 Axios 攔截器來處理請求和響應&#xff0c;并添加授權和錯誤處理。 什么是 Axios 攔截器&#xff1f; Axios 攔截器允許您在請求發送和響應…

阿里云SLB的使用總結

一、什么是SLB 實現k8s的服務service的一種推薦方式&#xff0c;也是服務上云后&#xff0c;替代LVS的一個必選產品。 那么它有什么作用呢&#xff1f; 1、負載均衡&#xff0c;是它與生俱來的。可以配置多個服務器組&#xff1a;包括虛擬服務器組、默認服務器組、主備服務器…

markdown快捷鍵

markdown快捷鍵 快捷鍵 Markdown 圖標 快捷鍵 撤銷 Ctrl Z 重做 Ctrl Y 加粗 Ctrl B 斜體 Ctrl I 標題 Ctrl Shift H 有序列表 Ctrl Shift O 無序列表 Ctrl Shift U 待辦列表 Ctrl Shift C 插入代碼 Ctrl Shift K 插入鏈接 Ctrl Shift L 插入圖片 Ctrl Shif…

JUnit 之初體驗

文章目錄 1.定義2.引入1&#xff09;使用 Maven 工具2&#xff09;使用 Gradle 工具3&#xff09;使用 Jar 包 2.樣例0&#xff09;前提1&#xff09;測試類2&#xff09;測試方法3&#xff09;測試斷言4&#xff09;實施 總結 1.定義 JUnit 是一個流行的 Java 單元測試框架&a…

H5ke14--1--拖放

介紹drag,drop 一.被拖動元素,目標(釋放區) 元素要設置dragable屬性:true,false,auto 被拖動元素上面有三個事件,drag,dragend,按下左鍵,移動種,鼠標松,這三個事件一般只用獲取我們的被拖動元素 冒泡:event是可以繼承的,mouseevent鼠標事件,dragevent拖放事件,前面都是一個…

ubuntu 修改系統時間,解決更新軟件報錯問題

ubuntu在更新軟件時出現E: Release file for http://security.ubuntu.com/ubuntu/dists/bionic-security/InRelease 錯誤 網上解決方法一&#xff1a;修改系統時間 修改時區 timedatectl set-timezone Asia/Shanghai 查看當前時間 date -R date -s “2023-12-5 15:57:15” 查看…

C++11多線程基本知識點

文章目錄 進程和線程的概念進程和線程的區別 C多線程的基本內容創建線程std::thread線程IDstd::thread對象生命周期和線程等待和分離線程參數傳遞引用類型成員函數作為線程入口和線程基類的封裝lambda臨時函數作為線程入口函數lambda函數lambda線程 多線程同步和通信多線程通信…

Python基礎(一、安裝環境及入門)

一、安裝 Python 訪問 Python 官方網站 并點擊 "Downloads"&#xff08;下載&#xff09;。 在下載頁面中&#xff0c;你會看到最新的 Python 版本。選擇與你的操作系統相對應的 Windows 安裝程序并下載。 雙擊下載的安裝程序&#xff0c;運行安裝向導。 在安裝向…

$(this) 和 this 關鍵字在 jQuery 中有何不同?

在jQuery中&#xff0c;$(this)是一個特殊的語法&#xff0c;用于使用jQuery庫中的函數和方法來操作當前選擇的元素。這個語法將原生的JavaScript "this" 對象包裝成一個jQuery對象&#xff0c;使開發者可以使用jQuery提供的豐富功能來處理當前元素。 而在一般的Java…

Redis KEY*模糊查詢導致速度慢、阻塞其他 Redis 操作

Redis KEY*模糊查詢導致交互速度慢、阻塞其他 Redis 操作 查詢速度慢的原因 在Redis中&#xff0c;使用通配符 KEYS 命令進行鍵的模糊匹配&#xff08;比如 KEYS key*&#xff09;可能會導致性能問題&#xff0c;尤其是在數據集較大時。這是因為 KEYS 命令的實現需要遍歷所有…

多個大模型高效部署平臺的實戰教程

大家好,我是herosunly。985院校碩士畢業,現擔任算法研究員一職,熱衷于機器學習算法研究與應用。曾獲得阿里云天池比賽第一名,CCF比賽第二名,科大訊飛比賽第三名。擁有多項發明專利。對機器學習和深度學習擁有自己獨到的見解。曾經輔導過若干個非計算機專業的學生進入到算法…

mybatis和mybatisplus中對 同namespace 中id重復處理邏輯源碼解析

一、背景 同事在同一個mapper.xml &#xff08;namespace相同&#xff09;&#xff0c;復制了一個sql沒有修改id&#xff0c;正常啟動項目。但是我以前使用mybatis的時候如果在namespace相同情況下&#xff0c;id重復&#xff0c;項目會報錯無法正常啟動&#xff0c;后來看代碼…

用戶帳戶限制(例如,時間限制)會阻止你登錄。請與系統管理員或技術支持聯系以獲取幫助。

用戶帳戶限制(例如&#xff0c;時間限制)會阻止你登錄。請與系統管理員或技術支持聯系以獲取幫助。 在Windows11遠程連接Windows10時提示【用戶帳戶限制(例如&#xff0c;時間限制)會阻止你登錄。請與系統管理員或技術支持聯系以獲取幫助。】我們該如何解決&#xff1a; 1、在…

React聚焦渲染速度

目錄 一、引言 二、React.js的渲染速度機制 虛擬DOM Diff算法 三、優化React.js的渲染速度 避免不必要的重新渲染 使用合適的數據結構和算法 使用React Profiler工具進行性能分析 四、實際案例分析 五、總結 一、引言 在當今的Web開發領域&#xff0c;React.js無疑是…

C語言——螺旋矩陣(注釋詳解)

一、前言&#xff1a; 螺旋矩陣是指一個呈螺旋狀的矩陣&#xff0c;它的數字由第一行開始到右邊不斷變大&#xff0c;向下變大&#xff0c;向左變大&#xff0c;向上變大&#xff0c;如此循環。 二、市面解法&#xff08;較難理解,代碼長度短&#xff09;&#xff1a; 根據階數…

【ARMv8 SIMD和浮點指令編程】浮點數據轉換指令——數據類型互轉必備

浮點數據轉換指令包括不同的浮點精度數之間的轉換,還包括整型和浮點數之間的轉化。 在了解數據轉換指令前,必須學習 IEEE 754 定義的五種舍入規則。前兩條規則舍入到最接近的值,其他的稱為定向舍入: 舍入到最接近的值 Round to nearest, ties to even – rounds to the n…

Python 多線程和多進程并發執行

Python 多線程和多進程并發執行 引言多線程主要特點和概念多線程的使用threading 模塊concurrent.futures 線程池 多進程主要特點和概念&#xff1a;多進程的使用&#xff1a;multiprocessing 模塊concurrent.futures 進程池 選擇合適的進程數 總結I/O 密集型任務CPU 密集型任務…