private void SignInUser(string email, string password) { string userData = "{\"email\":\"" + email + "\",\"password\":\"" + password + "\",\"returnSecureToken\":true}"; RestClient.Post <SignResponse>("https://www.googleapis.com/identitytoolkit/v3/relyingparty/verifyPassword?key=" + AuthKey, userData).Then( response => { string emailVerification = "{\"idToken\":\"" + response.idToken + "\"}"; RestClient.Post( "https://www.googleapis.com/identitytoolkit/v3/relyingparty/getAccountInfo?key=" + AuthKey, emailVerification).Then( emailResponse => { fsData emailVerificationData = fsJsonParser.Parse(emailResponse.Text); EmailConfirmationInfo emailConfirmationInfo = new EmailConfirmationInfo(); serializer.TryDeserialize(emailVerificationData, ref emailConfirmationInfo).AssertSuccessWithoutWarnings(); if (emailConfirmationInfo.users[0].emailVerified) { idToken = response.idToken; localId = response.localId; GetUsername(); } else { Debug.Log("You are stupid, you need to verify your email dumb"); } }); }).Catch(error => { Debug.Log(error); }); }
public static async Task Activity_SaveEmailConfirmationResult( [ActivityTrigger] EmailConfirmationInfo confirmationInfo, [Table("EmailConfirmations")] CloudTable orderTable, ILogger log) { TableOperation operation = TableOperation.Retrieve <EmailConfirmationTableEntity>( EmailConfirmationTableEntity.PartitionKeyValue, confirmationInfo.Id.ToString()); TableResult result = await orderTable.ExecuteAsync(operation); var tableEntity = result.Result as EmailConfirmationTableEntity; if (tableEntity is null) { throw new NullReferenceException($"Missing email confirmation record."); } tableEntity.Result = confirmationInfo.Result; operation = TableOperation.Replace(tableEntity); _ = await orderTable.ExecuteAsync(operation); log.LogInformation($"Result is saved with value: '{confirmationInfo.Result}'."); }
public static async Task <EmailConfirmationInfo> Orchestrator_SendEmailConfirmation( [OrchestrationTrigger] IDurableOrchestrationContext context, ILogger log) { if (!context.IsReplaying) { log.LogInformation("SendEmailConfirmation orchestration started."); } EmailConfirmationInput input = context.GetInput <EmailConfirmationInput>(); var confirmationInfo = new EmailConfirmationInfo { Id = context.NewGuid(), RequestUri = input.RequestUri, Email = input.Email, OrchestrationId = context.InstanceId, Result = "Sent" }; await context.CallActivityAsync(nameof(Activity_SendEmailConfirmation), confirmationInfo); using (var cts = new CancellationTokenSource()) { DateTime timeoutAt = context.CurrentUtcDateTime.AddSeconds(30); Task timeoutTask = context.CreateTimer(timeoutAt, cts.Token); Task <string> confirmResultTask = context.WaitForExternalEvent <string>(_eventName); if (!context.IsReplaying) { context.SetCustomStatus($"Waiting for human interaction or timeout at: {timeoutAt.ToString("hh:mm:ss")} UTC."); } Task winnerTask = await Task.WhenAny(confirmResultTask, timeoutTask); if (winnerTask == confirmResultTask) { cts.Cancel(); confirmationInfo.Result = confirmResultTask.Result; } else { confirmationInfo.Result = "Timed Out"; } } await context.CallActivityAsync(nameof(Activity_SaveEmailConfirmationResult), confirmationInfo); return(confirmationInfo); }
public static void Activity_SendEmailConfirmation( [ActivityTrigger] EmailConfirmationInfo confirmationInfo, [Table("EmailConfirmations")] out EmailConfirmationTableEntity tableEntity, ILogger log) { tableEntity = new EmailConfirmationTableEntity(confirmationInfo); UriBuilder uriBuilder = new UriBuilder { Scheme = confirmationInfo.RequestUri.Scheme, Host = confirmationInfo.RequestUri.Host, Port = confirmationInfo.RequestUri.Port, Path = $"api/{nameof(ConfirmEmail)}/{confirmationInfo.Id}", Query = "result=Approved" }; log.LogInformation($"Confirm email with the URL: '{uriBuilder}'."); }