示例#1
0
        static void Main(string[] args)
        {
            // Please enter your application access key
            string         applicationAccessKey = "";
            AppAccessToken token = new AppAccessToken(Guid.Parse(applicationAccessKey));

            // Please enter your API key
            string dataCenterApiKey = "";

            int checkIntervalInSeconds = 120;

            using (ILeadScoringEventClient client = new LeadScoringEventClient(token, dataCenterApiKey, checkIntervalInSeconds))
            {
                // Always use the Subscribe method that allows you to plug in your custom error handling logic.
                client.Subscribe(ProcessLeadScoringThresholdPasses, ErrorHandler);

                int intervalInMinutes = TimeSpan.FromSeconds(checkIntervalInSeconds).Minutes;
                Console.WriteLine($"Waiting for {intervalInMinutes} minutes to receive Lead Scoring Threshold Passes. Pres any key to stop and exit");
                Console.ReadLine();

                Console.WriteLine("Unsubscribing from the LeadScoringEventClient. Waiting for pending operations to complete.");
                client.Unsubscribe();
                Console.WriteLine("Pending operations complete.");
            }
        }
        public async Task Handle_GetAppAccessTokenCommand_AccessTokenExisted()
        {
            //Arrange
            var expected = new AppAccessToken()
            {
                access_token = "789012",
                expires_in   = 7200,
                time_stamp   = DateTime.Now
            };
            var db = new List <AppAccessToken>()
            {
                expected
            };

            context.SetupGet(c => c.AppAccessTokens).Returns(Mocking.GetMockDbSet(db));

            var command = new GetAppAccessTokenCommand();
            var handler = createHandler();

            //Act
            var result = await handler.Handle(command);

            //Assert
            context.VerifyAll();
            Assert.True(Jsonning.EqualsOrThrows(expected, result));
            Assert.Same(expected, db.FirstOrDefault());
        }
        public async Task GetAppAccessTokenAsync_WeChatCommunicator()
        {
            //Arrange
            var appid        = "wxf1759596e3365d3e";
            var secret       = "50d58aee48c9e5cb8a593b93cc182547";
            var access_token = "123456";
            var expires_in   = 7200;
            var expected     = new AppAccessToken()
            {
                access_token = access_token,
                expires_in   = expires_in,
                time_stamp   = new DateTime(2017, 1, 1)
            };

            var service = createService();

            http.Setup(h => h.GetAsync($"https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={appid}&secret={secret}"))
            .Returns(Task.FromResult(JsonConvert.SerializeObject(new {
                access_token = access_token,
                expires_in   = expires_in
            })));
            provider.Setup(p => p.GetNow()).Returns(new DateTime(2017, 1, 1));
            config["AppId"]  = appid;
            config["Secret"] = secret;

            //Act
            var actual = await service.GetAppAccessTokenAsync();

            //Assert
            http.VerifyAll();
            provider.VerifyAll();
            Assert.True(Jsonning.EqualsOrThrows(expected, actual));
        }
示例#4
0
    protected void Page_Load(object sender, EventArgs e)
    {
        string urlInfo  = HttpContext.Current.Request.Url.Query;
        string szopenid = Request["openid"];

        if (string.IsNullOrEmpty(GetCode()) && string.IsNullOrEmpty(szopenid))
        {
            string szParm = Request["ticket"];
            string url    = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" + szAppID + "&redirect_uri=" + Server.UrlEncode(szICURL + "/pages/") + "shareredirt.aspx&response_type=code&scope=snsapi_base&state=" + szParm;
            Response.Redirect(url);
            Response.End();
        }
        else
        {
            if (!string.IsNullOrEmpty(szopenid))
            {
                //   openid.Value = szopenid;
            }
            else
            {
                AppAccessToken accTocken  = GetAppToken();
                string         szTicket   = Request["state"];//乱转获取ticket
                string         szWxUserID = GetInfoFromUrl(szWxUrl, "access_token=" + accTocken.access_token + "&ticket=" + szTicket);
                Response.Write(urlInfo);
                Response.Write("<br />");
                Response.Write(accTocken.ToString());
                Response.Write("<br />");
                Response.Write("tickt=" + szTicket + "<br />");
                Response.Write("szWxUserIDtext=" + szWxUserID);
                Response.End();
            }
        }
    }
示例#5
0
        public async Task <IActionResult> Google([FromBody] GoogleModel googleModel)
        {
            var appAccessToken = new AppAccessToken();
            var tokenResponse  = await Client.PostAsync($"https://www.googleapis.com/oauth2/v4/token?code={googleModel.Code}&client_id={_googleAuthModel.ClientId}&client_secret={_googleAuthModel.ClientSecret}&redirect_uri=http://localhost/oauth2callback&grant_type=authorization_code", null);

            if (tokenResponse.StatusCode != HttpStatusCode.OK)
            {
                return(new BadRequestObjectResult(new { code = "InvalidCode", description = tokenResponse.Content.ReadAsStringAsync().Result }));// "Google authorization code is not valid."});
            }
            appAccessToken = JsonConvert.DeserializeObject <AppAccessToken>(tokenResponse.Content.ReadAsStringAsync().Result);
            var userResponse = await Client.GetStringAsync($"https://www.googleapis.com/oauth2/v2/userinfo?access_token={appAccessToken.AccessToken}");

            var userInfo     = JsonConvert.DeserializeObject <GoogleUserData>(userResponse);
            var existingUser = await _userManager.FindByEmailAsync(userInfo.Email);

            if (existingUser == null)
            {
                var user = new ApplicationUser
                {
                    GoogleId    = userInfo.Id,
                    Email       = userInfo.Email,
                    UserName    = userInfo.FirstName + userInfo.LastName,
                    PictureUrl  = userInfo.Picture,
                    Visibility  = true,
                    Nationality = "US"
                };
                if (userInfo.Gender != null)
                {
                    user.Gender = userInfo.Gender.Equals("male") ? Gender.Male : userInfo.Gender.Equals("female") ? Gender.Female : Gender.Other;
                }
                else
                {
                    user.Gender = Gender.None;
                }

                user.UserName = UserExtensions.RemoveDiacritics(user.UserName);
                var result = await _userManager.CreateAsync(user, Convert.ToBase64String(Guid.NewGuid().ToByteArray()).Substring(0, 8));

                if (!result.Succeeded)
                {
                    return(new BadRequestObjectResult(result.Errors));
                }
                else
                {
                    existingUser = await _userManager.FindByNameAsync(user.UserName);
                }
            }

            var jwt = await Tokens.GenerateJwt(_jwtFactory.GenerateClaimsIdentity(existingUser.UserName, existingUser.Id),
                                               _jwtFactory, existingUser.UserName, _jwtOptions, new JsonSerializerSettings { Formatting = Formatting.Indented }, existingUser.ProfileComplete);

            return(new OkObjectResult(jwt));
        }
        public static void Add_UpdateToken(int userId, TokenDetails _token, int forceupdate = 0, string deviceType = null)
        {
            try
            {
                LystenEntities db       = new LystenEntities();
                var            chkToken = db.AppAccessTokens.Where(x => x.UserId == userId).FirstOrDefault();
                if (chkToken != null)
                {
                    if (chkToken.ExpiresOn <= DateTime.Now)
                    {
                        db.Entry(chkToken).State = EntityState.Modified;

                        TimeSpan t = TimeSpan.FromMinutes(Convert.ToInt16(ConfigurationManager.AppSettings["TokenExpireHour"].ToString()));
                        chkToken.AuthToken = _token.access_token;
                        chkToken.ExpiresOn = DateTime.Now.Add(t);
                        chkToken.IssuedOn  = DateTime.Now;

                        db.SaveChanges();
                    }
                    else
                    {
                        if (forceupdate > 0)
                        {
                            db.Entry(chkToken).State = EntityState.Modified;

                            TimeSpan t = TimeSpan.FromMinutes(Convert.ToInt16(ConfigurationManager.AppSettings["TokenExpireHour"].ToString()));
                            chkToken.AuthToken  = _token.access_token;
                            chkToken.ExpiresOn  = DateTime.Now.Add(t);
                            chkToken.IssuedOn   = DateTime.Now;
                            chkToken.DeviceType = deviceType;
                            db.SaveChanges();
                        }
                    }
                }
                else
                {
                    AppAccessToken _tokenDetails = new AppAccessToken();
                    _tokenDetails.UserId   = userId;
                    _tokenDetails.IssuedOn = DateTime.Now;
                    TimeSpan t = TimeSpan.FromMinutes(Convert.ToInt16(ConfigurationManager.AppSettings["TokenExpireHour"].ToString()));
                    _tokenDetails.ExpiresOn  = DateTime.Now.Add(t);
                    _tokenDetails.AuthToken  = _token.access_token;
                    _tokenDetails.DeviceType = deviceType;
                    db.AppAccessTokens.Add(_tokenDetails);
                    db.SaveChanges();
                }
                db.Dispose();
            }
            catch (Exception ex)
            {
            }
        }
示例#7
0
    public AppAccessToken GetAppToken()
    {
        AppAccessToken accToken = null;

        if (
            (Session["WAccessToken"] == null) || Session["WAccessToken"].GetType() != typeof(AppAccessToken) ||
            (string.IsNullOrEmpty(((AppAccessToken)Session["WAccessToken"]).openid)) ||
            (Session["WAccessToken_Time"] == null) ||
            ((DateTime.Now - (DateTime)Session["WAccessToken_Time"]).TotalSeconds >= ((AppAccessToken)Session["WAccessToken"]).expires_in))
        {
            String tok = Request["tok"];
            if (!String.IsNullOrEmpty(tok))
            {
                string szAccToken2 = GetWebRequest("https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=" + szAppID + "&grant_type=refresh_token&refresh_token=" + tok);
                accToken = JSON.parse <AppAccessToken>(szAccToken2);
                if (accToken != null && accToken.access_token != null)
                {
                    Session["WAccessToken"]      = accToken;
                    Session["WAccessToken_Time"] = DateTime.Now;
                    //Logger.trace("oauth2 get refresh_token:" + accToken.openid);
                    return(accToken);
                }
                else
                {
                    Logger.Trace(szAccToken2);
                }
            }

            string szCode     = GetCode();
            string szAccToken = GetWebRequest("https://api.weixin.qq.com/sns/oauth2/access_token?appid=" + szAppID + "&secret=" + szAPPSercert + "&code=" + szCode + "&grant_type=authorization_code");

            accToken = JSON.parse <AppAccessToken>(szAccToken);
            if (accToken != null && accToken.access_token != null)
            {
                Session["WAccessToken"]      = accToken;
                Session["WAccessToken_Time"] = DateTime.Now;
                //Session.Timeout = 10;
                Logger.trace("szAccToken info=:" + szAccToken);
                Logger.trace("oauth2 get access_token:" + accToken.openid);
            }
            else
            {
                Logger.Trace(szAccToken);
            }
        }
        else
        {
            accToken = (AppAccessToken)Session["WAccessToken"];
        }
        return(accToken);
    }
示例#8
0
        static void Main(string[] args)
        {
            string yourApplicationKey = "";
            AppAccessToken token = new AppAccessToken(Guid.Parse(yourApplicationKey));

            string yourDecDataCenterApiKey = "";

            int checkIntervalInSeconds = 120;
            using (ILeadScoringEventClient client = new LeadScoringEventClient(token, yourDecDataCenterApiKey, checkIntervalInSeconds))
            {
                client.Subscribe(ProcessLeadScoringThresholdPasses);

                int intervalInMinutes = TimeSpan.FromSeconds(checkIntervalInSeconds).Minutes;
                Console.WriteLine("Waiting for {0} minutes to receive Lead Scoring Threshold Passes. Pres any key to stop and exit", intervalInMinutes);
                Console.ReadLine();

                Console.WriteLine("Unsubscribing from the LeadScoringEventClient. Waiting for pending operations to complete.");
                client.Unsubscribe();
                Console.WriteLine("Pending operations complete.");
            }
        }
示例#9
0
        static void Main(string[] args)
        {
            string         yourApplicationKey = "";
            AppAccessToken token = new AppAccessToken(Guid.Parse(yourApplicationKey));

            string yourDecDataCenterApiKey = "";

            int checkIntervalInSeconds = 120;

            using (ILeadScoringEventClient client = new LeadScoringEventClient(token, yourDecDataCenterApiKey, checkIntervalInSeconds))
            {
                client.Subscribe(ProcessLeadScoringThresholdPasses);

                int intervalInMinutes = TimeSpan.FromSeconds(checkIntervalInSeconds).Minutes;
                Console.WriteLine("Waiting for {0} minutes to receive Lead Scoring Threshold Passes. Pres any key to stop and exit", intervalInMinutes);
                Console.ReadLine();

                Console.WriteLine("Unsubscribing from the LeadScoringEventClient. Waiting for pending operations to complete.");
                client.Unsubscribe();
                Console.WriteLine("Pending operations complete.");
            }
        }
        public async Task Handle_GetAppAccessTokenCommand_AccessTokenNotExisted()
        {
            //Arrange
            var expected = new AppAccessToken();
            var db       = new List <AppAccessToken>();

            communicator.Setup(c => c.GetAppAccessTokenAsync())
            .Returns(Task.FromResult(expected));
            context.SetupGet(c => c.AppAccessTokens).Returns(Mocking.GetMockDbSet(db));
            context.Setup(c => c.SaveAsync()).Returns(Task.CompletedTask);

            var command = new GetAppAccessTokenCommand();
            var handler = createHandler();

            //Act
            var result = await handler.Handle(command);

            //Assert
            communicator.VerifyAll();
            context.VerifyAll();
            Assert.True(Jsonning.EqualsOrThrows(expected, result));
            Assert.Same(expected, db.FirstOrDefault());
        }
        public async Task Handle_GetAppAccessTokenCommand_AccessTokenOutDated()
        {
            //Arrange
            var expected = new AppAccessToken()
            {
                access_token = "789012",
                expires_in   = 7200,
                time_stamp   = DateTime.Now
            };
            var db = new List <AppAccessToken>()
            {
                new AppAccessToken {
                    access_token = "123456",
                    expires_in   = 7200,
                    time_stamp   = DateTime.Now.AddHours(-3)
                }
            };

            communicator.Setup(c => c.GetAppAccessTokenAsync())
            .Returns(Task.FromResult(expected));
            context.SetupGet(c => c.AppAccessTokens).Returns(Mocking.GetMockDbSet(db));
            context.Setup(c => c.SaveAsync()).Returns(Task.CompletedTask);

            var command = new GetAppAccessTokenCommand();
            var handler = createHandler();

            //Act
            var result = await handler.Handle(command);

            //Assert
            communicator.VerifyAll();
            context.VerifyAll();
            Assert.True(Jsonning.EqualsOrThrows(expected, result));
            Assert.Equal(expected.access_token, db.FirstOrDefault().access_token);
            Assert.Equal(expected.expires_in, db.FirstOrDefault().expires_in);
            Assert.Equal(expected.time_stamp, db.FirstOrDefault().time_stamp);
        }
示例#12
0
    public string GetToken()
    {
        bool bNeedNew = true;

        if (Application["access_token"] != null && Application["expires_in"] != null)
        {
            DateTime dt = DateTime.Parse(Application["expires_in"].ToString());
            TimeSpan sp = DateTime.Now.Subtract(dt);

            if (sp.TotalMinutes > 1)
            {
                return(Application["access_token"].ToString());

                bNeedNew = false;
            }
        }
        if (bNeedNew)
        {
            string         szRes     = GetWebRequest("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + szAppID + "&secret=" + szAPPSercert + "");
            AppAccessToken apptocken = JSON.parse <AppAccessToken>(szRes);
            return(apptocken.access_token);
        }
        return(null);
    }
示例#13
0
    protected void Page_Load(object sender, EventArgs e)
    {
        string urlInfo = HttpContext.Current.Request.Url.Query;

        AppAccessToken accTocken = GetAppToken();
        string         szopenid  = accTocken.openid;

        Response.Redirect("http://ic.unifound.net/pages/seatyyy.aspx?openid=" + szopenid);
        Response.End();


        string szTicket   = Request["state"];                                                                                      //乱转获取ticket
        string szWxUserID = GetWebRequest(szWxUrl + "?access_token=" + accTocken.access_token.ToString() + "&ticket=" + szTicket); // GetInfoFromUrl(szWxUrl, "access_token=" + accTocken.refresh_token.ToString() +"&ticket=" + szTicket);

        Response.Write(urlInfo);
        Response.Write("<br />");
        Response.Write("openid=" + accTocken.openid.ToString());
        Response.Write("<br />");
        Response.Write("access_token=" + accTocken.access_token.ToString());
        Response.Write("<br />");
        Response.Write("tickt=" + szTicket + "<br />");
        Response.Write("szWxUserIDtext=" + szWxUserID);
        Response.End();
    }