I'm trying to create a bot in which the user has to first authentificate. I'm well aware of drawbacks when not using magic number validation, however i want the user to authentificate directly when clicking on the link. 
The bot that im using is this [AuthBot](https://github.com/MicrosoftDX/AuthBot/tree/master/AuthBot).

This is the method that verify the magic number when put by the user : 

```
public virtual async Task MessageReceivedAsync(IDialogContext context, IAwaitable<IMessageActivity> argument)
        {
            var msg = await argument;

            AuthResult authResult;
            string validated = "";
            int magicNumber = 0;
            if (context.UserData.TryGetValue(ContextConstants.AuthResultKey, out authResult))
            {
                try
                {
                    //IMPORTANT: DO NOT REMOVE THE MAGIC NUMBER CHECK THAT WE DO HERE. THIS IS AN ABSOLUTE SECURITY REQUIREMENT
                    //REMOVING THIS WILL REMOVE YOUR BOT AND YOUR USERS TO SECURITY VULNERABILITIES. 
                    //MAKE SURE YOU UNDERSTAND THE ATTACK VECTORS AND WHY THIS IS IN PLACE.
                    context.UserData.TryGetValue<string>(ContextConstants.MagicNumberValidated, out validated);
                    if (validated == "true")
                    {
                        context.Done($"Thanks {authResult.UserName}. You are now logged in. ");
                    }
                    else if (context.UserData.TryGetValue<int>(ContextConstants.MagicNumberKey, out magicNumber))
                    {
                        if (msg.Text == null)
                        {
                            await context.PostAsync($"Please paste back the number you received in your authentication screen.");

                            context.Wait(this.MessageReceivedAsync);
                        }
                        else
                        {

                            if (msg.Text.Length >= 6 && magicNumber.ToString() == msg.Text.Substring(0, 6))
                            {
                                context.UserData.SetValue<string>(ContextConstants.MagicNumberValidated, "true");
                                context.Done($"Thanks {authResult.UserName}. You are now logged in. ");
                            }
                            else
                            {
                                context.UserData.RemoveValue(ContextConstants.AuthResultKey);
                                context.UserData.SetValue<string>(ContextConstants.MagicNumberValidated, "false");
                                context.UserData.RemoveValue(ContextConstants.MagicNumberKey);
                                await context.PostAsync($"I'm sorry but I couldn't validate your number. Please try authenticating once again. ");

                                context.Wait(this.MessageReceivedAsync);
                            }
                        }
                    }
                }
                catch
                {
                    context.UserData.RemoveValue(ContextConstants.AuthResultKey);
                    context.UserData.SetValue(ContextConstants.MagicNumberValidated, "false");
                    context.UserData.RemoveValue(ContextConstants.MagicNumberKey);
                    context.Done($"I'm sorry but something went wrong while authenticating.");
                }
            }
            else
            {
                await this.CheckForLogin(context, msg);
            }
        }

```

Someone show me how to not to use magic number in the process of authentificating ?