public async Task <IActionResult> OnPostAsync(string appid, string appSecret) { var appIdentity = new AppIdentication(appid, appSecret); var request = new AccessTokenRequest(appIdentity); var response = _client.Execute(request); IsSuccess = !response.IsError; if (!response.IsError) { var identity = new ClaimsIdentity(CookieAuthenticationDefaults.AuthenticationScheme); identity.AddClaim(new Claim("appid", appid)); identity.AddClaim(new Claim("appSecret", appSecret)); identity.AddClaim(new Claim("token", response.Access_Token)); var authProperties = new AuthenticationProperties { ExpiresUtc = new DateTimeOffset(DateTime.UtcNow.AddSeconds(response.Expires_In)) }; await HttpContext?.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, new ClaimsPrincipal(identity), authProperties); if (!String.IsNullOrEmpty(ReturnUrl)) { return(Redirect(ReturnUrl)); } return(Redirect("/")); } else { ErrorMessage = response.ErrorMessage; } return(Page()); }
public void GetAccessTokenCore() { var appid = new AppIdentication("wx7fc05579394bd02c", "26f8f072c53e97d0033e3589e7de4e84"); var request = new AccessTokenRequest(appid); IApiClient client = new DefaultApiClient(); var response = client.Execute(request); Console.WriteLine(response.ToString()); }
private ApiAccessTokenManager() { if (ConfigurationManager.AppSettings.AllKeys.Contains(s_configAppId) && ConfigurationManager.AppSettings.AllKeys.Contains(s_configAppSecret)) { m_appIdentity = new AppIdentication( ConfigurationManager.AppSettings[s_configAppId], ConfigurationManager.AppSettings[s_configAppSecret]); } }
public void ErrorMessageTest() { var appid = new AppIdentication("wx7fc05579394bd02c", "26f8f072c53e97d0033e3589e7de4e84"); var request = new AccessTokenRequest(appid); var mock = new Mock <DefaultApiClient>(); mock.Setup(d => d.DoExecute(request)).Returns("{\"errcode\":40013,\"errmsg\":\"invalid appid\"}"); var testobj = mock.Object.Execute(request); Console.WriteLine(testobj); }
public void MatchMessageTest() { var appid = new AppIdentication("wx7fc05579394bd02c", "26f8f072c53e97d0033e3589e7de4e84"); var request = new AccessTokenRequest(appid); var mock = new Mock <DefaultApiClient>(); mock.Setup(d => d.DoExecute(request)).Returns("{\"access_token\":\"ACCESS_TOKEN\",\"expires_in\":7200}"); var testobj = mock.Object.Execute(request); Console.WriteLine(testobj); }
public AccessTokenRequest(AppIdentication id) { AppIdentity = id; }
public void ProcessRequest(HttpContext context) { var accesstoken = CookiesHelper.GetCookie(accesstokenKey); SnsOAuthAccessTokenResponse AccessToken = null; var m_client = new DefaultApiClient(); var m_appIdent = new AppIdentication(wxappid, wxappsecret); string State = context.Request["state"]; string jumpUrl = "index.html"; try { if (accesstoken == null) { string code = context.Request["Code"]; var request = new SnsOAuthAccessTokenRequest { AppID = m_appIdent.AppID, AppSecret = m_appIdent.AppSecret, Code = code }; AccessToken = m_client.Execute(request); if (AccessToken.IsError) { throw new Exception("获取网页授权accesstoken失败。" + JsonHelper.ReBuilder(request) + "\r\n" + AccessToken.ErrorMessage); } CookiesHelper.AddCookie("webpage_accesstoken", JsonHelper.ReBuilder(AccessToken), DateTime.Now.AddSeconds(AccessToken.ExpiresIn - 600)); } else { AccessToken = JsonHelper.Build <SnsOAuthAccessTokenResponse>(accesstoken.Value); } string unionid = AccessToken.UnionId; if (String.IsNullOrEmpty(unionid)) { unionid = AccessToken.OpenId; } string openid = AccessToken.OpenId; var query = new RequestOperation <string>(); query.Header = new HeaderInfo() { DeviceID = 5, DisplayName = "customer", UserID = 1 }; query.Body = unionid; var service = new CustomerBP(); var data = service.LoginByWechatAccount(query); //不存在此用户 if (data.ErrCode == 1) { var wexinInfo = new SnsUserInfoRequest { OAuthToken = AccessToken.AccessToken, OpenId = AccessToken.OpenId, Lang = Language.CN }; var userinfo_res = m_client.Execute(wexinInfo); if (userinfo_res.IsError) { throw new Exception("获取用户信息失败2。" + JsonHelper.ReBuilder(wexinInfo) + "\r\n" + JsonHelper.ReBuilder(userinfo_res)); } #region 注册 string url = HttpUtility.UrlDecode(State); int invateUserId = 0; if (!string.IsNullOrEmpty(State)) { url = domian + unescape(url); invateUserId = getInveteUser(url); } var register = new RequestOperation <RegisterData>(); register.Header = query.Header; register.Body = new RegisterData(); register.Body.Account = ""; register.Body.WechatAccount = unionid; register.Body.QQAccount = ""; register.Body.Face = userinfo_res.HeadImageUrl; register.Body.NickName = register.Body.Name = userinfo_res.NickName; register.Body.Password = "******"; var register_res = service.Register(register); if (register_res.ErrCode != 0) { throw new Exception("注册用户失败:" + register_res.Message); } LoginManage.SaveUserWeixinOpenId(userinfo_res.OpenId); LoginManage.SaveUserInfo(register_res.Body.UserID); if (!string.IsNullOrEmpty(State)) { jumpUrl = replaceInveteUserParam(url); } #endregion } else { //不准修改,此处用于微信支付!!! LoginManage.SaveUserWeixinOpenId(AccessToken.OpenId); LoginManage.SaveUserInfo(data.Body.UserID); if (!string.IsNullOrEmpty(State)) { string url = domian + HttpUtility.UrlDecode(State); jumpUrl = replaceInveteUserParam(url); } } } catch (Exception ex) { Logger.WriteException("【微信网页授权】", ex, ""); } context.Response.Redirect(jumpUrl); }
public void SetAppIdentity(AppIdentication appIdentity) { m_appIdentity = appIdentity; }