コード例 #1
0
        public async Task <IActionResult> WxLogin(string code, string url, string state)
        {
            var accessTokenResult = await WebAppAutherize.GetUserAccessToken(WxAppId, WxAppSecret, code);

            await distributedCache.SetValue(new RedisDocument <UserAccessTokenResult>
            {
                ExpireTime = DateTime.Now.AddSeconds(accessTokenResult.ExpiresIn),
                Key        = WxAppId + "_" + accessTokenResult.OpenId + "_AccessToken",
                SetTime    = DateTime.Now,
                Value      = accessTokenResult
            });

            var userInfo = await WebAppAutherize.GetUserInfo(accessTokenResult.AccessToken, accessTokenResult.OpenId);

            userInfo.AppId = configuration["Ciyuanya:Wx:WebAppId"];
            var wxLoginUserId = await userAccountBusiness.WxWebLoin(userInfo);

            //将用户Id提交到Redis 缓存

            HttpContext.Session.Set(UserAccountBusiness.UserAccountSessionkey, Encoding.UTF8.GetBytes(wxLoginUserId));
            await HttpContext.Session.CommitAsync();

            await SetAuth(wxLoginUserId);

            return(Redirect(url));
        }