проверить код с помощью Restsharp - PullRequest
0 голосов
/ 17 мая 2018

Я использую следующий фрагмент кода, чтобы запросить код для 2fa (двухфакторная аутентификация) и работает хорошо:

private async void TwilioSMS(object sender, EventArgs e)
{
RestSharp.RestClient client = new RestSharp.RestClient("https://api.authy.com/protected/json/phones/verification");

        RestSharp.RestRequest request = new RestSharp.RestRequest("start", RestSharp.Method.POST);
        numcheck = Numero.Text.Trim();
        request.AddHeader("Content-Type", "application/json");
        request.RequestFormat = RestSharp.DataFormat.Json;
        string este = "{\"api_key\":\"" + apikey + "\",\"via\":\"sms\"," + "\"country_code\":52," + "\"phone_number\":"+numcheck + ",\"locale\":\"es\"}";

    request.AddParameter("text/json", este, RestSharp.ParameterType.RequestBody);
        RestSharp.IRestResponse response = await client.ExecuteTaskAsync(request);

        respuesta = response.Content;
        Console.WriteLine(respuesta);
}

Но когда я пытаюсь выполнить проверку с помощью следующего фрагмента кода:

private async void VerifCode(object sender, EventArgs e)
    {
        try
        {

            if (numcheck == string.Empty) { numcheck = Numero.Text.Trim(); }

            RestSharp.RestClient client = new RestSharp.RestClient("https://api.authy.com/protected/json/phones/verification");

                RestSharp.RestRequest request = new RestSharp.RestRequest("check", RestSharp.Method.GET);

                request.AddHeader("Content-Type", "application/json");
                request.RequestFormat = RestSharp.DataFormat.Json;


            string este = "{\"api_key\":\"" + apikey + "\",\"country_code\":52," + "\"phone_number\":" + numcheck + ",\"verification_code\":" + Confirmation.Text.Trim() + "}";

            request.AddParameter("text/json", este, RestSharp.ParameterType.RequestBody);
                RestSharp.IRestResponse response = await client.ExecuteTaskAsync(request);

                respuesta = response.Content;
            Console.WriteLine(numcheck);
                Console.WriteLine(response.Content);

                var listo = respuesta.Split(new string[] { "\"success\":" }, StringSplitOptions.RemoveEmptyEntries)[1];
                if (listo.Contains("true"))
                {
                    await DisplayAlert("Código correcto", "El código es correcto", "OK");
                }

                else
                {
                    await DisplayAlert("Código incorrecto", "El código es incorrecto o no ha sido mandado", "OK");
                }
        }

        catch { await DisplayAlert("Código incorrecto", "El código es incorrecto o no ha sido mandado", "OK"); }


    }

Я получаю следующую ошибку:

{"error_code":"60001","message":"Invalid API key","errors":{"message":"Invalid API key"},"success":false}

Я использую один и тот же ключ API для обоих, почему происходит ошибка?

1 Ответ

0 голосов
/ 25 мая 2018

Разработчик Twilio здесь.

При звонке на api.authy.com/protected/json/phones/verification/check запрос должен быть GET.Вы сделали запрос GET, однако в теле запроса вы передали параметры как JSON.При выполнении запроса GET вы не передаете тело, поэтому Authy API не читает их.Параметры должны быть включены в качестве параметров строки запроса в URL, а ваш ключ API должен быть установлен в заголовке X-Authy-API-Key.См. пример скручивания здесь для более подробной информации .

...