Пример #1
0
        static void TestGetUserInfo(string[] args)
        {
            // Step 1 - Defining the request
            string    method  = "socialize.getUserInfo";
            GSRequest request = new GSRequest(apiKey, secretKey, method, true);

            // Step 2 - Adding parameters
            request.SetParam("uid", "di1");                   // set the "uid" parameter to user's ID
            request.SetParam("enabledProviders", "*,testnetwork,testnetwork2");
            request.SetParam("status", "I feel great 22222"); // set the "status" parameter to "I feel great"

            // Step 3 - Sending the request
            GSResponse response = request.Send();

            bool validate = SigUtils.ValidateUserSignature(
                response.GetString("UID", ""),
                response.GetString("signatureTimestamp", ""), secretKey,
                response.GetString("UIDSignature", ""));

            // Step 4 - handling the request's response.
            if (response.GetErrorCode() == 0)
            {    // SUCCESS! response status = OK
                Console.WriteLine("Success in setStatus operation.");
            }
            else
            {  // Error
                Console.WriteLine("Got error on setStatus: {0}", response.GetErrorMessage());
            }
        }
Пример #2
0
        public async Task <bool> Login(string password)
        {
            // Step 1 - Defining the request
            GSRequest request = getGigyaRequest("accounts.login");



            // Step 2 - Adding parameters
            request.SetParam("loginID", Email);     // set the "uid" parameter to user's ID
            request.SetParam("password", password); // set the "status" parameter to "I feel great"

            // Step 3 - Sending the request
            GSResponse response = await Task <GSResponse> .Factory.FromAsync(request.BeginSend, request.EndSend, TaskCreationOptions.None);

            return(response.GetErrorCode() == 0);
        }
Пример #3
0
        /// <summary>
        /// Fetch available public key representation validated by the "kid".
        /// </summary>
        /// <param name="kid">The keyId</param>
        /// <param name="apiDomain">The api domain jwt was obtained, for example us1.gigya.com</param>
        internal static string FetchPublicKey(string kid, string apiDomain)
        {
            var resourceUri = $"https://accounts.{apiDomain}/accounts.getJWTPublicKey?V2=true";
            var request     = (HttpWebRequest)WebRequest.Create(resourceUri);

            request.Timeout = 30_000;
            request.AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip;
            request.Method    = "GET";
            request.KeepAlive = false;
            request.ServicePoint.Expect100Continue = false;

            GSResponse response;

            using (var webResponse = (HttpWebResponse)request.GetResponse())
                using (var sr = new StreamReader(webResponse.GetResponseStream(), Encoding.UTF8))
                    response = new GSResponse(method: request.Method, responseText: sr.ReadToEnd(), logSoFar: null);

            if (response.GetErrorCode() == 0)
            {
                GSArray keys = response.GetArray("keys", null);

                if (keys == null || keys.Length == 0)
                {
                    return(null); // Failed to obtain JWK from response data OR data is empty
                }
                foreach (object key in keys)
                {
                    if (key is GSObject)
                    {
                        string jwtKid = ((GSObject)key).GetString("kid", null);
                        if (jwtKid != null && jwtKid == kid)
                        {
                            return(((GSObject)key).ToJsonString());
                        }
                    }
                }
            }

            return(null);
        }
Пример #4
0
        private void HandleGSResponse(GSResponse res, string format)
        {
            lblVerifiedSig.Text = "";
            if (!format.Equals("xml", StringComparison.InvariantCultureIgnoreCase))
            {
                format = "txt";
            }

            var filename = Path.Combine(Path.GetTempPath(), "1." + format);

            try {
                if (res.GetErrorCode() > 0)
                {
                    lblVerifiedSig.ForeColor = Color.Red;
                    lblVerifiedSig.Text      = "Error !!!";
                    File.WriteAllText(filename, res.ToString());
                }
                else
                {
                    if (verifySignature)
                    {
                        verifyResponseSignature(res, format);
                    }
                    else
                    {
                        lblVerifiedSig.Text = "Data is ready";
                    }
                    File.WriteAllText(filename, res.GetResponseText());
                }
                webBrowser1.Navigate(filename);
                webBrowser1.Show();
            }
            catch (Exception ex) {
                MessageBox.Show(ex.Message, this.Text, MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

            btnSubmit.Text    = "Submit";
            btnSubmit.Enabled = true;
        }
Пример #5
0
        public async Task <bool> Register(string password)
        {
            // Step 1 - Defining the request

            GSRequest initRequest = getGigyaRequest("accounts.initRegistration");

            GSResponse initResponse = await Task <GSResponse> .Factory.FromAsync(initRequest.BeginSend, initRequest.EndSend, TaskCreationOptions.None);

            if (initResponse.GetErrorCode() != 0)
            {
                return(false);
            }

            string regToken = initResponse.GetString("regToken", null);

            GSRequest regRequest = getGigyaRequest("accounts.register");

            // Step 2 - Adding parameters
            //regRequest.SetParam("username", Email);
            regRequest.SetParam("email", Email); // set the "uid" parameter to user's ID
            regRequest.SetParam("password", password);
            regRequest.SetParam("regToken", regToken);
            regRequest.SetParam("finalizeRegistration", true);

            // Step 3 - Sending the request
            GSResponse regresponse = await Task <GSResponse> .Factory.FromAsync(regRequest.BeginSend, regRequest.EndSend, TaskCreationOptions.None);


            // Step 4 - handling the request's response.
            if (regresponse.GetErrorCode() == 0)
            { // SUCCESS! response status = OK
                return(true);
            }
            else
            { // Error
                return(false);
            }
        }
        private GSResponse Send(GSRequest request, string apiMethod, GigyaModuleSettings settings)
        {
            GSResponse response = null;

            try
            {
                response = request.Send();
            }
            catch (Exception e)
            {
                return(LogError(response, apiMethod, e));
            }

            GigyaApiHelper.LogResponseIfRequired(_logger, settings, apiMethod, response);

            if (response.GetErrorCode() != 0)
            {
                LogError(response, apiMethod, null);
                return(null);
            }

            return(response);
        }
Пример #7
0
 private bool ValidateExchangeSignatureResponse(GSResponse response)
 {
     // if signature is invalid a null response is returned
     return(response != null && response.GetErrorCode() == 0 && !string.IsNullOrEmpty(response.GetString(Constants.GigyaFields.UserId, null)));
 }
Пример #8
0
        /// <summary>
        /// Sends a request to the Gigya API.
        /// </summary>
        /// <param name="request">Request object.</param>
        /// <param name="apiMethod">The Gigya method to call.</param>
        /// <param name="settings">The Gigya module settings.</param>
        /// <param name="validateSignature">If set to true, the signature will be validated.</param>
        /// <returns></returns>
        private GSResponse Send(GSRequest request, string apiMethod, IGigyaModuleSettings settings, bool validateSignature)
        {
            if (apiMethod == "accounts.getAccountInfo")
            {
                var environment = new
                {
                    cms_name      = _settingsHelper.CmsName,
                    cms_version   = _settingsHelper.CmsVersion,
                    gigya_version = _settingsHelper.ModuleVersion
                };

                request.SetParam("environment", JsonConvert.SerializeObject(environment));
            }

            if (!string.IsNullOrEmpty(settings.DataCenter))
            {
                request.APIDomain = settings.DataCenter;
            }

            LogRequestIfRequired(settings, apiMethod);

            GSResponse response = null;

            try
            {
                response = request.Send();
            }
            catch (Exception e)
            {
                dynamic gigyaModel = response != null?JsonConvert.DeserializeObject <ExpandoObject>(response.GetResponseText()) : new ExpandoObject();

                var gigyaError = response != null?response.GetErrorMessage() : string.Empty;

                var gigyaErrorDetail = DynamicUtils.GetValue <string>(gigyaModel, "errorDetails");
                var gigyaCallId      = DynamicUtils.GetValue <string>(gigyaModel, "callId");

                _logger.Error(string.Format("API call: {0}. CallId: {1}. Error: {2}. Error Details: {3}.", apiMethod, gigyaCallId, gigyaError, gigyaErrorDetail), e);
                return(response);
            }

            LogResponseIfRequired(settings, apiMethod, response);

            if (response.GetErrorCode() != 0)
            {
                return(response);
            }

            var userId = response.GetString(Constants.GigyaFields.UserId, null);

            if (string.IsNullOrEmpty(userId))
            {
                return(response);
            }

            // no need to validate server calls unless explicitly required e.g. for signature exchange
            if (validateSignature && !ValidateSignature(userId, settings, response))
            {
                if (settings.DebugMode)
                {
                    dynamic gigyaModel = response != null?JsonConvert.DeserializeObject <ExpandoObject>(response.GetResponseText()) : new ExpandoObject();

                    var gigyaCallId = DynamicUtils.GetValue <string>(gigyaModel, "callId");

                    _logger.DebugFormat("Invalid user signature for login request. API call: {0}. CallId: {1}.", apiMethod, gigyaCallId);
                }
                return(null);
            }

            return(response);
        }
Пример #9
0
        private void PublishGigyaActions(User user, GSResponse res)
        {
            GigyaHelpers.setCookie(res, this.ControllerContext);
            GigyaUserData userData = new GigyaUserData()
            {
                City = user.City,
                CountryCode = user.CountryCode,
                Email = user.EMail,
                FirstName = user.FirstName,
                LastName = user.LastName,
                State = user.State
            };
            GigyaUserDataInfo userDataInfo = new GigyaUserDataInfo()
            {
                UID = user.UserId.ToString(),
                data = Newtonsoft.Json.JsonConvert.SerializeObject(userData, Newtonsoft.Json.Formatting.None)
            };
            GSObject userDataInfoObj = new GSObject(Newtonsoft.Json.JsonConvert.SerializeObject(userDataInfo));
            //res = GigyaHelpers.createAndSendRequest("gcs.setUserData", userDataInfoObj);
            res = GigyaHelpers.createAndSendRequest("ids.setAccountInfo", userDataInfoObj);
            var returnCode = res.GetErrorCode();

            //Publish to Activity Feed
            List<ActionLink> actionlinks = new List<ActionLink>();
            actionlinks.Add(new ActionLink() { text = SNSTemplates.register_actionlink_text, href = String.Format("{0}{1}", GlobalConfig.baseUrl, SNSTemplates.register_actionlink_href) });
            //mediaItem
            List<MediaItem> mediaItems = new List<MediaItem>();
            mediaItems.Add(new MediaItem() { type = SNSTemplates.register_mediaitem_type, src = String.Format("{0}{1}", GlobalConfig.AssetsBaseUrl, SNSTemplates.register_mediaitem_src), href = String.Format("{0}{1}", GlobalConfig.baseUrl, SNSTemplates.register_mediaitem_href) });
            UserAction action = new UserAction()
            {
                actorUID = user.UserId.ToString(),
                userMessage = SNSTemplates.register_usermessage,
                title = SNSTemplates.register_title,
                subtitle = String.Format("{0}{1}", GlobalConfig.baseUrl, SNSTemplates.register_subtitle),
                linkBack = String.Format("{0}{1}", GlobalConfig.baseUrl, SNSTemplates.register_linkback),
                description = String.Format(SNSTemplates.register_description, user.FirstName),
                actionLinks = actionlinks,
                mediaItems = mediaItems
            };

            GigyaMethods.PublishUserAction(action, user.UserId, "external");
            action.userMessage = String.Empty;
            action.title = String.Empty;
            action.mediaItems = null;
            GigyaMethods.PublishUserAction(action, user.UserId, "internal");

        }