Проверка телефона с помощью Twilio API с использованием java - PullRequest
0 голосов
/ 17 февраля 2020

Реализация аутентификации в проекте и использование проверки телефона с помощью API Twilio, но я столкнулся с ошибкой, которую я позже выполнил простой тест с кодом, который я добавил ниже . Сделал тест basi c с примером кода, который я получил из официальной документации twilio с их сайта, и обнаружил эту ошибку, которую я не смог выяснить.

Вот пример кода.

import com.twilio.Twilio;
import com.twilio.rest.verify.v2.service.Verification;

public class Login {
    public final static String ACCOUNT_SID = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
    public final static String AUTH_TOKEN = "auth_token";

    public static void main(String[] args) {
        Twilio.init(ACCOUNT_SID, AUTH_TOKEN);
        Verification verification = Verification.creator(
                "VAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
                "+237677777777",
                "sms")
                .create();

        System.out.println(verification.getStatus());
    }
}

Вот ошибка

/usr/lib/jvm/java-1.8.0-openjdk-amd64/bin/java -javaagent:/snap/intellij
Exception in thread "main" com.twilio.exception.ApiException: Cannot deserialize instance of `java.util.LinkedHashMap<java.lang.Object,java.lang.Object>` out of START_ARRAY token
 at [Source: (ByteArrayInputStream); line: 1, column: 100] (through reference chain: com.twilio.rest.verify.v2.service.Verification["send_code_attempts"])
    at com.twilio.rest.verify.v2.service.Verification.fromJson(Verification.java:167)
    at com.twilio.rest.verify.v2.service.VerificationCreator.create(VerificationCreator.java:201)
    at com.twilio.rest.verify.v2.service.VerificationCreator.create(VerificationCreator.java:23)
    at com.twilio.base.Creator.create(Creator.java:45)
    at Login.main(Login.java:14)
Caused by: com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `java.util.LinkedHashMap<java.lang.Object,java.lang.Object>` out of START_ARRAY token
 at [Source: (ByteArrayInputStream); line: 1, column: 100] (through reference chain: com.twilio.rest.verify.v2.service.Verification["send_code_attempts"])
    at com.fasterxml.jackson.databind.exc.MismatchedInputException.from(MismatchedInputException.java:59)
    at com.fasterxml.jackson.databind.DeserializationContext.reportInputMismatch(DeserializationContext.java:1442)
    at com.fasterxml.jackson.databind.DeserializationContext.handleUnexpectedToken(DeserializationContext.java:1216)
    at com.fasterxml.jackson.databind.DeserializationContext.handleUnexpectedToken(DeserializationContext.java:1126)
    at com.fasterxml.jackson.databind.deser.std.StdDeserializer._deserializeFromEmpty(StdDeserializer.java:639)
    at com.fasterxml.jackson.databind.deser.std.MapDeserializer.deserialize(MapDeserializer.java:360)
    at com.fasterxml.jackson.databind.deser.std.MapDeserializer.deserialize(MapDeserializer.java:29)
    at com.fasterxml.jackson.databind.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:530)
    at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeWithErrorWrapping(BeanDeserializer.java:528)
    at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeUsingPropertyBased(BeanDeserializer.java:417)
    at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromObjectUsingNonDefault(BeanDeserializerBase.java:1287)
    at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:326)
    at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:159)
    at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4202)
    at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3242)
    at com.twilio.rest.verify.v2.service.Verification.fromJson(Verification.java:165)
    ... 4 more

Process finished with exit code 1

Пожалуйста, любая помощь будет высоко ценится Я новичок в Twilio.

1 Ответ

0 голосов
/ 20 февраля 2020

Halo нашел обход этой ошибки. В то же время, пока Twilio решает, что вы можете использовать этот способ, чтобы получить код подтверждения, если вы столкнулись с той же проблемой :) Я использовал java Класс процесса и curl для отправки

Вот код.

void method(String var) throws IOException {

  String command ="curl -X POST https://verify.twilio.com/v2/Services/" + SERVICE_ID + "/Verifications --data-urlencode To=" + phoneNumber +
                        " --data-urlencode Channel=sms -u " + ACCOUNT_SID + ":" + AUTH_TOKEN;

  Process process = Runtime.getRuntime().exec(command);
  process.getInputStream();
// some code
}
...