An OTP should be sent to the contact number I input in the inputfield . If the OTP is correct then the
phone number is validated and the Next page should load.
Update: Since the documentation to use Firebase along with Unity is really unclear I had to find an alternative. I found the solution. I am using TextLocal as a SMS gateway provider. Here’s the tutorial I followed on Youtube: How to Generate and Send OTP SMS For Free using C#.NET?[With Source Code] - YouTube
The tutorial is in C# but is not meant for Unity. I modified the code to suit Unity and here’s my code:
using System; using System.Collections.Generic; using System.Net; using System.Collections.Specialized; using System.IO; using System.Text; using UnityEngine; using System.Collections.Generic; using System.Net; using System.Collections.Specialized; using System.Threading.Tasks; using System.Linq; using Random = System.Random; using UnityEngine.UI;
public class OTPSMS : MonoBehaviour { // public string txtPhone; // public string txtName; string randomNumber; public GameObject MessageBox; public GameObject MessageBox2; public GameObject MessageBox3; public GameObject MessageBox4; public InputField txtPhone; public InputField txtName; public InputField txtVerOTP;
// Start is called before the first frame update
void Start()
{
MessageBox.SetActive(false);
MessageBox2.SetActive(false);
MessageBox3.SetActive(false);
MessageBox4.SetActive(false);
}
// Update is called once per frame
void Update()
{
}
public void login()
{
String result;
string apiKey = “YOUR API KEY”; //The one which you get on TextLocal after registering . Follow the youtube tutorial
string numbers = txtPhone.text; // in a comma seperated list
string sender = "TXTLCL";
string name = txtName.text;
var rnd = new Random();
randomNumber = (rnd.Next(100000, 999999)).ToString();
string message = "Hey " +name+ " Your OTP is " +randomNumber ;
String url = "https://api.textlocal.in/send/?apikey=" + apiKey + "&numbers=" + numbers + "&message=" + message + "&sender=" + sender;
//refer to parameters to complete correct url string
StreamWriter myWriter = null;
HttpWebRequest objRequest = (HttpWebRequest)WebRequest.Create(url);
objRequest.Method = "POST";
objRequest.ContentLength = Encoding.UTF8.GetByteCount(url);
objRequest.ContentType = "application/x-www-form-urlencoded";
try
{
myWriter = new StreamWriter(objRequest.GetRequestStream());
myWriter.Write(url);
}
catch (Exception e)
{
MessageBox.SetActive(true);
}
finally
{
myWriter.Close();
}
HttpWebResponse objResponse = (HttpWebResponse)objRequest.GetResponse();
using (StreamReader sr = new StreamReader(objResponse.GetResponseStream()))
{
result = sr.ReadToEnd();
// Close and clean up the StreamReader
sr.Close();
}
MessageBox2.SetActive(true);
}
public void Verify()
{
if(txtVerOTP.text ==randomNumber)
{
MessageBox3.SetActive(true);
}
else
{
MessageBox4.SetActive(true);
}
}
}
And this is what the UI and hierarchy looks like: