Esempio n. 1
0
        protected override LoginOAuthData GetOAuthResult(CoreContext coreContext, IDictionary <string, object> parameter)
        {
            LoginOAuthData data = new LoginOAuthData();

            var Code = parameter["code"] as string;

            if (string.IsNullOrEmpty(Code))
            {
                data.ErrorCode    = 1;
                data.ErrorMessage = "授权失败";
                return(data);
            }
            var      Endata     = parameter["EncryptedData"] as string;
            var      IV         = parameter["IV"] as string;
            var      Appid      = parameter["Appid"] as string;
            WxConfig config     = coreContext.WxConfig.Where(w => w.OwnerAccount == "xcx" && w.Status == "1").FirstOrDefault();
            string   appId      = config.AppId;
            string   appSecretd = config.AppSecret;
            JObject  keyData    = GetKey(appId, appSecretd, Code);

            if (!string.IsNullOrEmpty(keyData["openid"].Value <string>()))
            {
                JObject user = JsonConvert.DeserializeObject <JObject>(new AESCUtil(keyData["session_key"].Value <string>(), IV.Replace(" ", "+")).AESDecrypt(Endata.Replace(" ", "+")));
                data.NickName = ConvertString(user["nickName"].Value <string>());
                data.OpenId   = user["openId"].Value <string>();
                data.PhotoUrl = user["avatarUrl"].Value <string>();
                data.UnionId  = user["unionId"].Value <string>();
                data.Sex      = user["gender"].Value <string>();

                var member = coreContext.MemberInfo.Where(m => m.WxUnionid == data.UnionId).Select(m => new { m.AccountId, m.NickName, m.PhotoUrl, m.Sex, m.WxUnionid }).FirstOrDefault();
                if (member != null && !string.IsNullOrEmpty(member.AccountId))
                {
                    data.NickName = member.NickName;
                    data.PhotoUrl = member.PhotoUrl;
                    data.UnionId  = member.WxUnionid;
                    data.Sex      = member.Sex;

                    coreContext.Database.ExecuteSqlCommand($"update member_info set xcx_open_id={data.OpenId} where wx_unionid={data.UnionId}");
                }
            }
            else
            {
                data.ErrorCode    = keyData["errcode"].Value <int>();
                data.ErrorMessage = keyData["errmsg"].Value <string>();
            }

            return(data);
        }
Esempio n. 2
0
        protected override LoginOAuthData GetOAuthResult(CoreContext coreContext, IDictionary <string, object> parameter)
        {
            LoginOAuthData data = new LoginOAuthData();

            if (!string.IsNullOrEmpty(parameter["code"] as string))
            {
                WxConfig config            = coreContext.WxConfig.Where(w => w.OwnerAccount == "wx" && w.Status == "1").FirstOrDefault();
                string   appId             = config.AppId;
                string   appSecretd        = config.AppSecret;
                var      weixinAccessToken = Senparc.Weixin.MP.AdvancedAPIs.OAuthApi.GetAccessTokenAsync(appId, appSecretd, parameter["code"] as string).Result;
                //WeixinAccessToken weixinAccessToken = GetAccessToken(appId, appSecretd, parameter["code"] as string);
                if (weixinAccessToken.errcode == 0)
                {
                    data.OpenId  = weixinAccessToken.openid;
                    data.UnionId = weixinAccessToken.unionid;

                    var member = coreContext.MemberInfo.Where(m => m.WxUnionid == data.UnionId).Select(m => new { m.AccountId, m.NickName, m.PhotoUrl, m.Sex, m.WxUnionid }).FirstOrDefault();
                    if (member != null && !string.IsNullOrEmpty(member.AccountId))
                    {
                        data.NickName = member.NickName;
                        data.PhotoUrl = member.PhotoUrl;
                        data.UnionId  = member.WxUnionid;
                        data.Sex      = member.Sex;

                        coreContext.Database.ExecuteSqlCommand($"update member_info set wx_open_id={data.OpenId} where wx_unionid={data.UnionId}");
                    }
                    else
                    {
                        if (parameter["state"] as string == "snsapi_userinfo")
                        {
                            OAuthUserInfo user = OAuthApi.GetUserInfoAsync(weixinAccessToken.access_token, weixinAccessToken.openid).Result;
                            data.NickName = ConvertString(user.nickname);
                            data.PhotoUrl = user.headimgurl;
                            data.Sex      = string.Format("{0}", user.sex);
                        }
                    }
                }
            }
            else
            {
                data.ErrorCode    = 1;
                data.ErrorMessage = "授权失败";
            }

            return(data);
        }