XMPPError connected to chat.facebook.com (Permission denied) login to facebook chat with asmack

Posted

技术标签:

【中文标题】XMPPError connected to chat.facebook.com (Permission denied) login to facebook chat with asmack【英文标题】:XMPPError connecting to chat.facebook.com (Permission denied) logging in to facebook chat with asmack 【发布时间】:2011-08-17 08:02:36 【问题描述】:

您可能知道,没有一个关于如何使用 asmack 库正确登录 Facebook 的有组织的文档。我设法在网上找到了一些代码,至少可以让我登录到我的帐户,但为什么我不断收到以下异常:

XMPPError 连接到 chat.facebook.com:5222.: remote-server-error(502) XMPPError 连接到 chat.facebook.com:5222。 -- 引起:java.net.SocketException: Permission denied

代码如下:

((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】:

明显的潜在解释 - 你的 androidManifest.xml 中有INTERNET 权限吗?

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

没有这个,你将无法访问网络资源。


编辑:

您在清单中的哪个位置请求 INTERNET 权限?它的位置可以产生影响,它会默默地失败。它需要位于顶层(例如,在&lt;manifest&gt; 标签下,不附加到活动)。当然,如果您通过 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)

【讨论】:

看起来您的编辑成功了!因为我现在遇到了一堆新错误,比如服务器超时或其他什么。我的使用权限最初位于 标记下。不敢相信这让我被困了 6 个小时 如果 Android 工具将其标记为错误,那就太好了,因为它显然只有一个地方可以使用,但我猜它是有效的 XML,所以它可以通过。

以上是关于XMPPError connected to chat.facebook.com (Permission denied) login to facebook chat with asmack的主要内容,如果未能解决你的问题,请参考以下文章

XMPPError:未找到项目 - 取消

使用 smack 'XMPPError: service-unavailable - cancel' 传输文件失败

Android Smack 4.2:“XMPPError: feature-not-implemented - cancel”(错误)

java.io.IOException: Connection reset by peer和java.io.IOException: Connection timed out。Socket

急!急!急!服务起来一直报java.io.IOException: Connection reset by peer这个怎么解决!

start: Unable to connect to Upstart: Failed to connect to socket /com/ubuntu/upstart: