Пример #1
0
        public ServiceTokenModel GetAccessTokenByCode(string code)
        {
            var result = new ServiceTokenModel();
            var conn   = MxAppHost.Instance.Container.Resolve <IServiceConnection>();

            using (var client = new HttpClient())
            {
                var values = new Dictionary <string, string>

                {
                    { "grant_type", "authorization_code" },
                    { "code", code },
                    { "redirect_uri", conn.RedirectUrl },
                    { "client_id", conn.ClientId },
                    { "client_secret", conn.SecretKey }

                    /*{"redirect_uri","https://iafc.matrixdev.net/" },
                     * {"client_id", "29192542"},
                     * {"client_secret", "Bi4IB9Yhh5PrOa3y7PykntuQKg90ZNDiNes7tDNfwwKDgYIz4v"}*/
                };

                var content  = new FormUrlEncodedContent(values);
                var response = client.PostAsync("{0}/Token".Fmt(conn.EndpointUrl), content).Result;

                // where accessToken create from successfully ask Helix exchange infor from ServiceTokenModel above.
                var respToken      = new SiteAccessTokenModel();
                var responseString = response.Content.ReadAsStringAsync().Result;
                log.Info("resp:{0}".Fmt((new { helix = responseString, red = conn.RedirectUrl, client = conn.ClientId, sec = conn.SecretKey })));
                respToken = responseString.FromJson <SiteAccessTokenModel>();

                if (respToken != null)
                {
                    result.Refresh_token = respToken.Refresh_token;
                    result.Token         = respToken.Access_token;
                    result.IssueTime     = respToken.Issued;
                    result.ExpireTime    = respToken.Expires;
                    result.ClientId      = respToken.ContactId.ToString();
                }


                /*_log.Debug($"from Helix service client secon-token:{responseString.SerializeToString()}," +
                 *         $" objReso:{respToken.SerializeToString()}, Token:{respToken.Access_token}");*/
            }
            return(result);
        }
Пример #2
0
        public ActionResult Index_(string code = "")
        {
            if (String.IsNullOrEmpty(code))
            {
                return(Redirect("~/?code=null"));
            }

            // have code & not login then do activate code
            if ((this.MyId().IsNullOrEmptyGuid() || this.MyId().IsOneGuid()) && !String.IsNullOrEmpty(code))
            {
                log.Info("what myid: {0}, by code:{1}".Fmt(this.MyId(), code));

                /*var m = HelixServiceClient.Init(ServiceConn)
                 *  .GetAccessTokenByCode(code);*/
                var conn   = MxAppHost.Instance.Container.Resolve <IServiceConnection>();
                var result = new ServiceTokenModel();

                using (var client = new HttpClient())
                {
                    var values = new Dictionary <string, string>

                    {
                        { "grant_type", "authorization_code" },
                        { "code", code },
                        { "redirect_uri", conn.RedirectUrl },
                        { "client_id", conn.ClientId },
                        { "client_secret", conn.SecretKey }

                        /*{"redirect_uri","https://iafc.matrixdev.net/" },
                         * {"client_id", "29192542"},
                         * {"client_secret", "Bi4IB9Yhh5PrOa3y7PykntuQKg90ZNDiNes7tDNfwwKDgYIz4v"}*/
                    };

                    var content  = new FormUrlEncodedContent(values);
                    var response = client.PostAsync("{0}/Token".Fmt(conn.EndpointUrl), content).Result;

                    // where accessToken create from successfully ask Helix exchange infor from ServiceTokenModel above.
                    var respToken      = new SiteAccessTokenModel();
                    var responseString = response.Content.ReadAsStringAsync().Result;
                    log.Info("resp:{0}".Fmt((new { helix = responseString, red = conn.RedirectUrl, client = conn.ClientId, sec = conn.SecretKey })));
                    respToken = responseString.FromJson <SiteAccessTokenModel>();

                    if (respToken != null)
                    {
                        result.Refresh_token = respToken.Refresh_token;
                        result.Token         = respToken.Access_token;
                        result.IssueTime     = respToken.Issued;
                        result.ExpireTime    = respToken.Expires;
                        result.ClientId      = respToken.ContactId.ToString();
                    }


                    /*_log.Debug($"from Helix service client secon-token:{responseString.SerializeToString()}," +
                     *         $" objReso:{respToken.SerializeToString()}, Token:{respToken.Access_token}");*/
                }


                /*HelixClient response = HelixServiceClient.Init(ServiceConn)
                 *  .GetAccessTokenByCode(code).Instance();
                 * if (response.HelixDataResponse.ResponseStatus.Is(MatrixGroup.Data.ResponseStatus.Warning))
                 * {
                 *  ViewData["warning"] = response.HelixDataResponse.Message;
                 *  return Redirect("~/NotifyInfo/WarningInfo");
                 * }*/
            }
            return(Redirect("~/?code={0}".Fmt(code)));
        }