自数小时以来,我试图弄清楚为什么我的Facebook连接无法正常工作。我总是必须点击它两次。我第一次单击它时,我看到 facbeook 对话框正在打开,但它没有调用任何类型的回调,所以我的登录活动只是"恢复"。
public void onClick_fbIcon(View v) {
if(!buttonsEnabled)
return;
buttonsEnabled = false;
tryFacebookConnect();
}
@SuppressWarnings("deprecation")
private void tryFacebookConnect() {
Log.d("debug", "start fbc");
doingFacebooklogin = true;
facebook.authorize(this, new DialogListener() {
public void onComplete(Bundle values) {
end();
toast("Complete");
Log.d("debug", "#0");
// .. continue with main code
}
public void onFacebookError(FacebookError error) {
end();
Log.d("debug", "#1");
}
public void onError(DialogError e) {
end();
Log.d("debug", "#2");
}
public void onCancel() {
end();
Log.d("debug", "#3");
}
private void end() {
Log.d("debug", "fbc complete");
doingFacebooklogin = false;
}
});
}
第一次点击我只得到"start fbc",但之后什么都没有,所以我想没有调用回调方法。
我发现当Facebook连接第一次不起作用时,"onResume被调用"。下次调用 onActivityResult 时。
@SuppressWarnings("deprecation")
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
Log.d("debug", "Main: onActivityResult");
super.onActivityResult(requestCode, resultCode, data);
facebook.authorizeCallback(requestCode, resultCode, data);
}
我的登录活动是由我的主要活动启动的意图,它指定是否需要登录:
Intent intent = new Intent(this, Login.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
startActivity(intent);
有时我可以看到以下错误:
11-22 10:23:39.684: D/Facebook-publish(7317): Can NOT get FbInjector instance! Probably because this method was called in ContentProvider's onCreate.
请看一下本教程。我只是遵循这个,我让它完美地工作。
希望它也能帮助你。
http://www.youtube.com/watch?v=xndi6s9Tn_U
为什么,但问题显然是facebook-sdk的一部分。我发现如果我的设备上没有安装Facebook应用程序,则不会出现此问题。所以我像这样更改了我的代码:
facebook.authorize(a, new String[] { }, **Facebook.FORCE_DIALOG_AUTH**, new DialogListener() {
...