- Home /
How do I send an OTP to certain mobile number I put in Input Field, if I put correct OTP then it should move to the next screen?
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.
Answer by unity_XY9GfkpHMyaikw · May 25, 2019 at 01:57 PM
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: https://www.youtube.com/watch?v=d8OrtnpFC3M&feature=player_embedded
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:
i did same but i dont get otp on phone i added country code too before phone number
please help