2011-08-17 1 views
0

Как вы, возможно, знаете, нет единой организованной документации о том, как правильно войти в Facebook, используя библиотеку asmack. Я каким-то образом удалось найти некоторые коды в сети, по крайней мере, позвольте мне войти в мой счет, но почему я получаю следующее исключение:XMPPError, подключающийся к chat.facebook.com (разрешенное разрешение) для входа в facebook chat с asmack

XMPPError подключая к chat.facebook.com:5222 .: remote-server-error (502) XMPPError, подключающийся к chat.facebook.com:5222. - вызвано следующими причинами: java.net.SocketException: Отказано в

Вот код:

((Button) findViewById(R.id.login_btn)).setOnClickListener(
     new OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      ConnectionConfiguration config = 
        new ConnectionConfiguration("chat.facebook.com", 5222, 
        "chat.facebook.com"); 
      config.setSASLAuthenticationEnabled(true); 

      Connection conn = new XMPPConnection(config); 
      try { 
       conn.connect(); 
       SASLAuthentication.supportSASLMechanism("PLAIN", 0); 

       ProgressDialog loading = ProgressDialog.show(instance, 
        "", "Loading..."); 
       conn.login(login_field.getText().toString(), 
        pwd_field.getText().toString(), 
        login_field.getText().toString() + "/fbchat"); 
       loading.hide(); 

       new AlertDialog.Builder(instance).setMessage(conn.getUser()) 
        .create().show(); 
      } catch (XMPPException e) { 
       new AlertDialog.Builder(instance).setMessage(e.toString()) 
       .setPositiveButton("OK", new DialogInterface.OnClickListener() { 
        @Override 
        public void onClick(DialogInterface dialog, int which) { 
        dialog.cancel(); 
        } 
       }) 
       .create().show(); 
      } 
     } 
}); 

ответ

3

Очевидное потенциальное объяснение - у вас есть разрешение INTERNET в вашем AndroidManifest.xml?

<uses-permission android:name="android.permission.INTERNET"/> 

Без этого вы не сможете получить доступ к сетевым ресурсам.


EDIT:

Где в манифесте Вы запрашиваете разрешение INTERNET? Это местоположение может изменить ситуацию, и он будет терпеть неудачу. Он должен находиться на верхнем уровне (под тегом <manifest>, не привязанным к действию, например). Конечно, если вы добавили его с помощью Eclipse, это, вероятно, в правильном месте уже:

<manifest 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.android.samplesync" 
    android:versionCode="1" 
    android:versionName="1.0"> 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <activity> 
     ... 
    </activity> 
</manifest> 

Кроме того, как вы подключения к интернету? Это также может указывать на то, что требуемые порты блокируются брандмауэром (см. here)

+0

Боюсь, что у меня там есть. –

+0

похоже, что ваше редактирование работало! Потому что я получаю кучу новых ошибок, например, тайм-аут сервера или что-то в этом роде. мое использование - разрешение было первоначально расположено под тегом. не могу поверить, что я застрял в течение 6 часов –

+0

Было бы здорово, если бы инструменты Android помечены как ошибка, так как очевидно, что только одно место это может пригодиться, но я предполагаю, что это правильный XML, чтобы он прошел. – RivieraKid

 Смежные вопросы

  • Нет связанных вопросов^_^