我正在关注Facebook Android SDK tutorial,我的应用程序中包含了导致此步骤的所有代码。我启动应用程序(在我的手机上测试它,但在模拟器中测试它)并出现此屏幕:
好的,太棒了!
但是,一旦它完成加载,而不是像这里给出的例子那样出现任何类型的登录屏幕:
我想出了这个:
代码:
package com.greatapp;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import com.facebook.android.*;
import com.facebook.android.Facebook.*;
public class MyGreatActivity extends Activity {
Facebook facebook = new Facebook("MY_APP_ID");
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
facebook.authorize(this, new DialogListener() {
@Override
public void onComplete(Bundle values) {}
@Override
public void onFacebookError(FacebookError error) {}
@Override
public void onError(DialogError e) {}
@Override
public void onCancel() {}
});
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
facebook.authorizeCallback(requestCode, resultCode, data);
}
}
好的,我删除了该项目并重新开始。之前的这个屏幕正在做一些事情,但一遍又一遍地重新加载这个加载屏幕。几乎就像它联系Facebook的服务器1000个不同的东西,每个都有一个加载屏幕。我不知道该怎么办。 Logcat没有错误。
答案 0 :(得分:0)
它对我有用。 在logcat中是否有任何错误消息? 你是否使用互联网许可? 检查这些事情。
或者您已经完成了
或在代码中添加一些日志,例如:
facebook.authorize(this, new DialogListener() {
@Override
public void onComplete(Bundle values) {
Log.d("onComplete",""+values);
}
@Override
public void onFacebookError(FacebookError error) {
Log.d("onFacebookError",""+error);
}
@Override
public void onError(DialogError e) {
Log.d("onError",""+e);
}
@Override
public void onCancel() {
Log.d("onCancel","cancel");
}
});
并在logcat中查看结果
答案 1 :(得分:0)
只需像这样修改你的代码:
import com.facebook.android.*;
import com.facebook.android.Facebook.*;
public class MyGreatActivity extends Activity {
public static final String[] PERMISSIONS = new String[] {"email", "publish_checkins", "publish_stream","offline_access"};
Facebook facebook = new Facebook("MY_APP_ID");
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
facebook.authorize(this,PERMISSIONS,Facebook.FORCE_DIALOG_AUTH, new DialogListener() {
@Override
public void onComplete(Bundle values) {}
@Override
public void onFacebookError(FacebookError error) {}
@Override
public void onError(DialogError e) {}
@Override
public void onCancel() {}
});
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
facebook.authorizeCallback(requestCode, resultCode, data);
}
}
Facebook.FORCE_DIALOG_AUTH --->将强行登录facebook
在使用新用户登录之前,您还需要调用 facebook.logout(context)方法来注销当前方法。
使用此方法:
public void Logout() throws MalformedURLException, IOException {
facebook.logout(mContext);
}