我正在使用facebook sdk 4.9.0进行facebook登录。 Facebook登录正常工作,但我想要的是每次用户尝试登录Facebook时,他应该显示Facebook登录屏幕。 目前,如果用户已登录到Facebook应用程序,则不会显示Facebook登录屏幕,但我的登录请求成功。
以下是我正在使用的代码
public void goToFacebookLogin() {
LoginManager.getInstance().logOut();
LoginManager.getInstance().registerCallback(callbackManager,
new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
Timber.i("FB login success:" + loginResult.getAccessToken().getToken());
}
@Override
public void onCancel() {
Timber.e("FB login cancel");
showErrorMessage(getString(R.string.string_error_facebook_login_cancelled));
}
@Override
public void onError(FacebookException error) {
Timber.e("FB login error:" + Log.getStackTraceString(error));
showErrorMessage(getString(R.string.string_error_facebook_login));
}
});
if (fbPermissions.isEmpty()) {
fbPermissions.addAll(Arrays.asList(getResources().getStringArray(R.array.string_array_fb_permissions)));
}
if (Utils.isNetworkAvailable(this)) {
showProgressBar();
LoginManager.getInstance().logInWithReadPermissions(this, fbPermissions);
} else {
showErrorMessage(getString(R.string.string_error_no_network));
}
}
答案 0 :(得分:1)
你必须初始化FacebookSDK。
使用FacebookSDK.SDKInitialize()
。
感谢@ kishansolanki124提及此事。不推荐使用此方法。提到的工作是here。
答案 1 :(得分:0)
GraphRequest(AccessToken.getCurrentAccessToken(),
"/me/permissions/", null, HttpMethod.DELETE,
GraphRequest.Callback {
AccessToken.setCurrentAccessToken(null)
LoginManager.getInstance().logOut()
}).executeAsync()