using System.Web;
using Yw;
namespace PBS.Desktop
{
public partial class WechatLoginCtrl : DevExpress.XtraEditors.XtraUserControl, ILogin
{
public WechatLoginCtrl()
{
InitializeComponent();
}
///
/// 登录开始事件
///
public event Action LoginStartEvent;
///
/// 登录取消事件
///
public event Action LoginCancelEvent;
///
/// 登录完成事件
///
public event Action LoginEndEvet;
private bool _isInitialized = false;//初始化
private const string _template = "hzkw_wx_template";//微信登录模板
private const string _software = "HStation_XHS_DESKTOP";//软件编码
///
/// 初始化
///
public async void Initial()
{
if (_isInitialized)
{
return;
}
_isInitialized = true;
var loginUrl = await BLLFactory.Instance.GetLoginUrl(_template);
await this.webView21.EnsureCoreWebView2Async();
this.webView21.Source = new Uri(loginUrl);
this.webView21.CoreWebView2.SourceChanged += CoreWebView2_SourceChanged;
}
//源改变
private async void CoreWebView2_SourceChanged(object? sender, Microsoft.Web.WebView2.Core.CoreWebView2SourceChangedEventArgs e)
{
var collection = HttpUtility.ParseQueryString(this.webView21.Source.Query);
var code = collection["code"];
var state = collection["state"];
if (!string.IsNullOrEmpty(code))
{
LoginStartEvent?.Invoke();
var result = await BLLFactory.Instance.LoginSoftwareStandardByWechatAccount(_template, _software, code, null);
LoginEndEvet?.Invoke(result);
}
}
}
}