退出后无法登录 Facebook 登录 Android
Facebook login not logging in after log out Android
我正在构建一个使用 Facebook SDK 的 android 应用程序。我目前正在使用 LoginManager 来处理登录流程。
我已经在 Applications onCreate 方法中初始化了 Facebook sdk。
public class DummyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
FacebookSdk.sdkInitialize(this);
AppEventsLogger.activateApp(this);
}
}
我也这样设置了我的 LoginActivity:
public class LoginActivity extends AppCompatActivity {
@Bind(R.id.custom_login_button)
Button mCustomFacebookButton;
private CallbackManager callbackManager;
private LoginManager mLoginManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
callbackManager = CallbackManager.Factory.create();
mLoginManager = LoginManager.getInstance();
mLoginManager.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
startActivity(new Intent(LoginActivity.this, MainActivity.class));
}
@Override
public void onCancel() {
}
@Override
public void onError(FacebookException error) {
error.printStackTrace();
}
});
mCustomFacebookButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mAuthProgressDialog.show();
mLoginManager.logInWithReadPermissions(LoginActivity.this
, Arrays.asList("user_events", "email" ,"user_friends"));
}
});
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
callbackManager.onActivityResult(requestCode, resultCode, data);
}
}
流程是,一旦按下登录按钮,它将启动 MainActivity,并且在那个 activity 中有一个带有调用的注销按钮的 SettingsActivity
LoginManager.getInstance().logOut();
这将带您回到登录 activity。
我面临的问题是,一旦调用注销,我就无法重新登录,而且我的 AccessToken 始终为空。所以本质上我被困在 LoginActivity 上。
更奇怪的是,一旦我删除构建文件并重新导入项目,它工作正常,直到我再次注销并且这个问题再次出现。自从我更新到 Android Studio 2.1,将构建工具更新到 23.0.3,将 SDK 工具更新到 25.1.3 后,它一直有这个问题。
-编辑:它不再通过重新导入进行自我纠正
事实证明,在我的 LoginActivity 清单中,我的 noHistory 为 true。这导致我的 onActivityResult 没有被调用。删除此行后,与 Facebook 登录相关的问题就消失了。
我正在构建一个使用 Facebook SDK 的 android 应用程序。我目前正在使用 LoginManager 来处理登录流程。 我已经在 Applications onCreate 方法中初始化了 Facebook sdk。
public class DummyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
FacebookSdk.sdkInitialize(this);
AppEventsLogger.activateApp(this);
}
}
我也这样设置了我的 LoginActivity:
public class LoginActivity extends AppCompatActivity {
@Bind(R.id.custom_login_button)
Button mCustomFacebookButton;
private CallbackManager callbackManager;
private LoginManager mLoginManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
callbackManager = CallbackManager.Factory.create();
mLoginManager = LoginManager.getInstance();
mLoginManager.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
startActivity(new Intent(LoginActivity.this, MainActivity.class));
}
@Override
public void onCancel() {
}
@Override
public void onError(FacebookException error) {
error.printStackTrace();
}
});
mCustomFacebookButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mAuthProgressDialog.show();
mLoginManager.logInWithReadPermissions(LoginActivity.this
, Arrays.asList("user_events", "email" ,"user_friends"));
}
});
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
callbackManager.onActivityResult(requestCode, resultCode, data);
}
}
流程是,一旦按下登录按钮,它将启动 MainActivity,并且在那个 activity 中有一个带有调用的注销按钮的 SettingsActivity
LoginManager.getInstance().logOut();
这将带您回到登录 activity。
我面临的问题是,一旦调用注销,我就无法重新登录,而且我的 AccessToken 始终为空。所以本质上我被困在 LoginActivity 上。
更奇怪的是,一旦我删除构建文件并重新导入项目,它工作正常,直到我再次注销并且这个问题再次出现。自从我更新到 Android Studio 2.1,将构建工具更新到 23.0.3,将 SDK 工具更新到 25.1.3 后,它一直有这个问题。
-编辑:它不再通过重新导入进行自我纠正
事实证明,在我的 LoginActivity 清单中,我的 noHistory 为 true。这导致我的 onActivityResult 没有被调用。删除此行后,与 Facebook 登录相关的问题就消失了。