XMPPError при подключении к chat.facebook.com (в доступе отказано), вход в чат Facebook с помощью asmack - PullRequest
0 голосов
/ 17 августа 2011

Как вы, возможно, знаете, нет ни одной организованной документации о том, как правильно войти в Facebook, используя библиотеку asmack. Мне как-то удалось найти в сети несколько кодов, чтобы хотя бы позволить мне войти в свою учетную запись, но почему я продолжаю получать следующее исключение:

XMPPError при подключении к chat.facebook.com:5222 .: ошибка удаленного сервера (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();
            }
         }
});

1 Ответ

3 голосов
/ 17 августа 2011

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

    <uses-permission android:name="android.permission.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>

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

...