您可能知道,没有一个有组织的文档介绍如何使用asmack库正确登录Facebook。我以某种方式设法在网上找到一些代码,至少允许我登录我的帐户,但为什么我一直得到以下例外:
连接到chat.facebook.com:5222的XMPPError:remote-server-error(502)连接到chat.facebook.com:5222的XMPPError。 - 由: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();
}
}
});
答案 0 :(得分:3)
明显的潜在解释 - 你的AndroidManifest.xml中是否有INTERNET
权限?
<uses-permission android:name="android.permission.INTERNET"/>
如果没有此功能,您将无法访问网络资源。
编辑:
您在清单中的哪个位置申请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)