- Home /
How to Send and Verify OTP using TWILIO in Unity?
Iam building a survey application. I need a way to validate the Phone number one inputs into the contact number inputfield.
I have been trying to use firebase to do the same . but the documents available online are not clear and there isn't any help/tutorails available as well.
Any kind of help is appreciated. Thanks.
Answer by unity_XY9GfkpHMyaikw · May 25, 2019 at 01:56 PM
Update: I found a solution. I am using Textlocal my OTP services. Here's the tutorial I followed: https://www.youtube.com/watch?v=d8OrtnpFC3M&feature=player_embedded So the code is in C# but not meant for UNity I have edited the code to fit Unity.
Here is 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 will register on textlocal
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 project lloks like: