java - 使用 java 使用 Twilio API 进行电话验证
问题描述
在项目中实现身份验证并使用 Twilio API 进行电话验证,但遇到了一个错误,我后来使用下面添加的代码进行了一个简单的测试。使用我从他们网站的官方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 的新手。
解决方案
Halo 发现了这个 bug。同时,虽然 Twilio 处理,如果您遇到相同的问题,您可以使用这种方式获取验证码 :)
我使用 java Process 类和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
}
推荐阅读
- python - 列表未按正确顺序附加
- java - 我正在学习构建您的第一个 Android 应用程序(请参阅下面的链接)并使用 Android Studio 4.1,但在第 5 步:启用 SafeArgs 我收到以下错误
- ios - 应用程序不断崩溃 [FBLPromise HTTPBody] 无法识别的选择器发送到实例
- reactjs - 通过 thunkApi 配置参数将调度传递给键入的 CreatedAsyncThunk 会导致错误
- windows - Windows 10:网络端口看似繁忙,但端口没有附加进程
- android - doWork 没有被 WorkoutManager 调用
- spring-boot - 如何将值从 application.yml 传递给 @ColumnTransformer 读取和写入 pgp_sym_decrypt 和 pgp_sym_encrypt 函数的参数
- python - 在 pygame 教程示例中用图像替换矩形
- javascript - 在 Fullcalendar V5 中更改当前日期不起作用
- c# - Null-forgiving 运算符 (!) 在 C# >= 8.0 中不起作用