Example #1
0
        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());
        }
Example #2
0
        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]);
     }
 }
Example #4
0
        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);
        }
Example #5
0
        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;
 }
Example #7
0
        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;
 }