【发布时间】:2016-07-01 08:09:53
【问题描述】:
我正在尝试使用 smack 库连接到 FCM:
这是我尝试过的。它可以工作,但是当连接尝试登录时出现异常。
new Thread(new Runnable(){
XMPPTCPConnectionConfiguration.Builder configBuilder = XMPPTCPConnectionConfiguration.builder();
private Handler umm;
@Override
public void run() {
configBuilder.setSecurityMode(XMPPTCPConnectionConfiguration.SecurityMode.disabled );
configBuilder.setServiceName("fcm-xmpp.googleapis.com");
configBuilder.setHost("fcm-xmpp.googleapis.com");//MAYBE PROBLEM HERE??
configBuilder.setPort(5236);
configBuilder.setCompressionEnabled(false);
configBuilder.setSendPresence(true);
configBuilder.setSocketFactory(SSLSocketFactory.getDefault());
InterfaceClass.FCMconnection = new XMPPTCPConnection(configBuilder.build());
umm = yes;
try {
InterfaceClass.FCMconnection.connect();
Log.v("pony", "white horse");
//InterfaceClass.FCMloggin.start();
android.os.Message y4 = android.os.Message.obtain();
y4.what = LOGINTOFCM;
umm.sendMessage(y4);
//the rest of the thread is just exception handling in catch clauses
一旦我的处理程序收到消息,我就会尝试使用连接登录 像这样:
try { FCMconnection.login("senderId@gcm.googleapis.com","SERVER_KEY");
Log.d("black","r2d2");
} catch (XMPPException e) {//exception thrown here
e.printStackTrace();
Log.d("black","maity "+e);
我得到以下异常: “smack.sasl.SASLErrorException:使用 X-OAUTH2 的 SASLError:编码不正确”
现在从文档中清楚地表明要实现 SASL 普通机制, 但我不知道怎么做?文档是这样说的:
“连接有两个重要的要求:
您必须启动传输层安全 (TLS) 连接。请注意,CCS 目前不支持 STARTTLS 扩展。 CCS 需要 SASL PLAIN 身份验证机制,使用 @gcm.googleapis.com(FCM 发件人 ID)和服务器密钥作为密码,其中发件人 ID 和服务器密钥是您在配置客户端应用程序时收集的值。有关获取这些凭据的信息,请参阅您平台的客户端文档。”
有人知道是什么原因导致了这个异常吗?我应该如何使用 smack 库连接到 FCM?
感谢您的建议。
【问题讨论】:
标签: android smack firebase-cloud-messaging sasl