0

我正在尝试为 twilio 聊天生成访问令牌,但出现此错误:我一直在试图找出错误的来源,但无法弄清楚。我将非常感谢您的帮助。谢谢

E/AndroidRuntime: FATAL EXCEPTION: main
                      Process: com.zihron.projectmanagementapp, PID: 16355
                      java.lang.Error: javax.xml.datatype.DatatypeConfigurationException: Provider org.apache.xerces.jaxp.datatype.DatatypeFactoryImpl not found
                          at javax.xml.bind.DatatypeConverterImpl.<clinit>(DatatypeConverterImpl.java:744)
                          at javax.xml.bind.DatatypeConverter.<clinit>(DatatypeConverter.java:78)
                          at javax.xml.bind.DatatypeConverter.printBase64Binary(DatatypeConverter.java:547)
                          at io.jsonwebtoken.impl.Base64Codec.encode(Base64Codec.java:24)
                          at io.jsonwebtoken.impl.Base64UrlCodec.encode(Base64UrlCodec.java:22)
                          at 
 io.jsonwebtoken.impl.AbstractTextCodec.encode(AbstractTextCodec.java:31)
                          at io.jsonwebtoken.impl.DefaultJwtBuilder.base64UrlEncode(DefaultJwtBuilder.java:314)
                          at io.jsonwebtoken.impl.DefaultJwtBuilder.compact(DefaultJwtBuilder.java:282)
                          at com.twilio.jwt.Jwt.toJwt(Jwt.java:100)
                          at ZihronChatApp.token.TokenGenerator.getToken(TokenGenerator.java:34)
                          at com.zihron.projectmanagementapp.ChatActivity.onCreateView(ChatActivity.java:43)

我的详细信息如下:

public  AccessToken getToken() {
        // Required for all types of tokens
        String twilioAccountSid ="AC601f2c7***7ed***640***264c***d0d";
        String twilioApiKey = "SK684***dda***c81****6c4a****093**";
        String twilioApiSecret ="96****dbc06****b74d50***b9***3*4";
        String serviceSid="IS***a29****e24****5d****4b20**3e*";

        String identity = "joshua.hamilton@gmail.com";

        ChatGrant grant = new ChatGrant();
        grant.setServiceSid(serviceSid);

        AccessToken token = new AccessToken.Builder(twilioAccountSid, 
       twilioApiKey, twilioApiSecret)
                .identity(identity).grant(grant).build();

        Log.e("++==--",""+token.toJwt());

        //.identity(identity).grant(grant);

     return token;
    }
4

1 回答 1

0

Twilio 开发人员布道者在这里。

Twilio Java 库不适用于 Android 项目。

这里的问题是您不应该将您的凭据存储在您的应用程序中。恶意用户可能会反编译您的应用程序,获取您的凭据并滥用它们。

相反,您应该创建一个可以运行此代码并返回令牌的服务器(或使用某种无服务器环境,例如Twilio Functions )。然后,您应该从您的 Android 应用程序发出 HTTP 请求以获取该令牌。查看Twilio Programmable Chat Android 快速入门,了解它是如何完成的。

于 2019-03-04T05:56:23.917 回答