Ejemplo n.º 1
0
        public override async Task <ExternalAuthUserInfo> GetUserInfo(string accessCode)
        {
            UsersWechat wechat      = new UsersWechat();
            var         accessToken = await _cacheManager.GetCache("WechatAccessTokenCache").Get("AccessToken",
                                                                                                 async() => await GetToken(_options.AppId, _options.Secret));

            //logger.Debug("获取token:"+accessToken.access_token);
            if (accessToken != null && !string.IsNullOrWhiteSpace(accessToken.access_token))
            {
                var url    = string.Format(Config.ApiWorkHost + "/cgi-bin/user/getuserinfo?access_token={0}&code={1}", accessToken.access_token, accessCode);
                var redata = Get.GetJson <GetUserResult>(url);
                if (!string.IsNullOrWhiteSpace(redata.user_ticket))
                {
                    UserTicket tiket = new UserTicket
                    {
                        user_ticket = redata.user_ticket
                    };
                    url = string.Format(Config.ApiWorkHost + "/cgi-bin/user/getuserdetail?access_token={0}", accessToken.access_token);
                    //   wechat = Post.GetResult<UsersWechat>(JsonConvert.SerializeObject(tiket));
                    wechat = await GetUserMsg(url, tiket);
                }
            }

            var t = wechat == null ? new ExternalAuthUserInfo() : new ExternalAuthUserInfo
            {
                EmailAddress = wechat.email,
                Surname      = wechat.name,
                ProviderKey  = wechat.userid,
                Provider     = Name,
                Name         = wechat.userid
            };

            return(t);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 通过企业微信获取用户信息
        /// </summary>
        /// <param name="accessCode"></param>
        /// <returns></returns>
        public override async Task <ExternalAuthUserInfo> GetUserInfo(string accessCode)
        {
            try
            {
                UsersWechat wechat = new UsersWechat();

                string accessToken = await this.GetToken(_options.AppId, _options.Secret);//_cacheManager.GetCache("CacheName").Get("Login", () => GetToken(_options.AppId, _options.Secret));

                if (!string.IsNullOrWhiteSpace(accessToken))
                {
                    var url = string.Format(Config.ApiWorkHost + "/cgi-bin/user/getuserinfo?access_token={0}&code={1}",
                                            accessToken, accessCode);

                    var redata = Get.GetJson <GetUserInfoResult>(url);
                    if (!string.IsNullOrWhiteSpace(redata.UserId))
                    {
                        //UserTicket tiket = new UserTicket
                        //{
                        //    user_ticket = redata.user_ticket
                        //};
                        //url = string.Format(Config.ApiWorkHost + "/cgi-bin/user/getuserdetail?access_token={0}",
                        //    accessToken);
                        //   wechat = Post.GetResult<UsersWechat>(JsonConvert.SerializeObject(tiket));

                        url = string.Format(Config.ApiWorkHost + "/cgi-bin/user/get?access_token={0}&userid={1}",
                                            accessToken, redata.UserId);
                        wechat = await Get.GetJsonAsync <UsersWechat>(url);

                        //wechat = await GetUserMsg(url, tiket);
                    }
                }

                var t = wechat == null
                    ? new ExternalAuthUserInfo()
                    : new ExternalAuthUserInfo
                {
                    EmailAddress = wechat.email,
                    //Surname = wechat.name,
                    ProviderKey = wechat.userid,
                    Provider    = Name,
                    Name        = wechat.name,
                    PhoneNumber = wechat.mobile
                };
                return(t);
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                throw;
            }
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 通过企业微信获取用户信息
        /// </summary>
        /// <param name="accessCode"></param>
        /// <returns></returns>
        public async Task <ExternalAuthUserInfo> GetUserInfo(string local_name, string accessCode)
        {
            try
            {
                var _config = await _configManager.GetCurrentConfigAsync(local_name);

                if (_config == null)
                {
                    throw new Abp.UI.UserFriendlyException("未能找到对应APP配置 : " + local_name);
                }


                UsersWechat wechat = new UsersWechat();

                string accessToken = await this.GetToken(_config.LocalName, _config.CropId, _config.Secret);//_cacheManager.GetCache("CacheName").Get("Login", () => GetToken(_options.CropId, _options.Secret));

                if (!string.IsNullOrWhiteSpace(accessToken))
                {
                    var url = string.Format(Config.ApiWorkHost + "/cgi-bin/user/getuserinfo?access_token={0}&code={1}",
                                            accessToken, accessCode);

                    var redata = Get.GetJson <GetUserInfoResult>(url);
                    if (!string.IsNullOrWhiteSpace(redata.UserId))
                    {
                        url = string.Format(Config.ApiWorkHost + "/cgi-bin/user/get?access_token={0}&userid={1}",
                                            accessToken, redata.UserId);
                        wechat = await Get.GetJsonAsync <UsersWechat>(url);
                    }
                }

                var t = wechat == null
                    ? new ExternalAuthUserInfo()
                    : new ExternalAuthUserInfo
                {
                    EmailAddress = wechat.email,
                    //Surname = wechat.name,
                    ProviderKey = wechat.userid,
                    Provider    = _config.LoginProvider,
                    Name        = wechat.name,
                    PhoneNumber = wechat.mobile
                };
                return(t);
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                throw;
            }
        }
Ejemplo n.º 4
0
        /// <summary>
        /// 通过小程序获取企业微信用户信息
        /// </summary>
        /// <param name="accessCode"></param>
        /// <returns></returns>
        private async Task <AuthUserInfo> GetMiniUserInfo(string local_name, string accessCode)
        {
            var _config = await _configManager.GetCurrentConfigAsync(local_name);

            if (_config == null)
            {
                throw new Abp.UI.UserFriendlyException("未能找到对应APP配置 : " + local_name);
            }

            UsersWechat wechat = new UsersWechat();

            string accessToken = await this.GetToken(_config.LocalName, _config.CropId, _config.Secret);

            if (!string.IsNullOrWhiteSpace(accessToken))
            {
                var url = string.Format(Config.ApiWorkHost + "/cgi-bin/miniprogram/jscode2session?access_token={0}&js_code={1}&grant_type=authorization_code",
                                        accessToken, accessCode);

                var redata = Get.GetJson <Code2Session>(url);
                if (!string.IsNullOrWhiteSpace(redata.userid))
                {
                    url = string.Format(Config.ApiWorkHost + "/cgi-bin/user/get?access_token={0}&userid={1}",
                                        accessToken, redata.userid);
                    wechat = await Get.GetJsonAsync <UsersWechat>(url);
                }
            }

            var t = wechat == null
                    ? new AuthUserInfo()
                    : new AuthUserInfo
            {
                EmailAddress = wechat.email,
                //Surname = wechat.name,
                ProviderKey = wechat.userid,
                Provider    = _config.LoginProvider,
                Name        = wechat.name,
                PhoneNumber = wechat.mobile
            };

            return(t);
        }