Я пытаюсь подключиться к FCM, используя библиотеку smack:
Вот что я пробовал. Это работает, но я получаю исключение, когда соединение пытается войти в систему.
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("[email protected]","SERVER_KEY");
Log.d("black","r2d2");
} catch (XMPPException e) {//exception thrown here
e.printStackTrace();
Log.d("black","maity "+e);
Я получаю следующее исключение: «smack.sasl.SASLErrorException: SASLError с использованием X-OAUTH2: неверная кодировка»
Теперь из документации ясно сказано, что необходимо реализовать простой механизм SASL, но я не знаю, как это сделать? Вот что говорится в документации:
«Соединение имеет два важных требования:
Вы должны инициировать соединение Transport Layer Security (TLS). Обратите внимание, что в настоящее время CCS не поддерживает расширение STARTTLS. CCS требует механизма аутентификации SASL PLAIN с использованием @gcm.googleapis.com (идентификатор отправителя FCM) и ключа сервера в качестве пароля, где идентификатор отправителя и ключ сервера являются значения, которые вы собрали при настройке клиентского приложения. См. клиентскую документацию для вашей платформы для получения информации о получении этих учетных данных».
Кто-нибудь знает, что может быть причиной этого исключения? Как мне подключиться к FCM с библиотекой smack?
Спасибо за любой совет.