내 앱에서 Facebook 로그인을 구현하려고합니다. 사용자가 이미 로그인했는지 여부를 확인하기 위해 스플래시 후 IntroLogin 활동이 있습니다. 사용자가 이미 로그인 한 경우 MainActivity를 곧바로로드합니다. 그렇지 않으면 사용자에게 로그인을 요청합니다.Facebook SDK를 사용하여 로그인 할 수 없습니다.
사용자가 로그인했는지 여부를 확인하는 내 방법은 Android 6 이상에서 잘 작동합니다. 그러나 Android Lollipop에서는 사용자 로그인 후 (사용자가 팝업을 통해 정보를 사용하도록 앱을 제공함) 앱이 종료됩니다. 로그에 FC 또는 메시지가 없습니다. 그냥 닫힙니다. 사용자가 앱을 다시 시작한 경우에도 다시 로그인하라는 메시지가 표시됩니다.
내 IntroLogin 활동 : UPDATE@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_intro_login);
sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
loginButton = (Button) findViewById(R.id.login_button);
FacebookSdk.sdkInitialize(getApplicationContext());
callbackManager = CallbackManager.Factory.create();
AccessToken accessToken = AccessToken.getCurrentAccessToken();
if(accessToken != null){
finish();
}
else{
loginButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
PopupLogin();
}
});
}
}
public void PopupLogin() {
// Set permissions
LoginManager.getInstance().logInWithReadPermissions(this, Arrays.asList("public_profile"));
LoginManager.getInstance().setLoginBehavior(LoginBehavior.WEB_VIEW_ONLY).registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
Log.i(TAG, "onSuccess: " + loginResult);
startActivity(new Intent(IntroLogin.this, MainActivity.class));
finish();
}
@Override
public void onCancel() {
Log.d("MyApp", "Login canceled");
Snackbar snackbar = Snackbar.make(loginButton, "Login process canceled", Snackbar.LENGTH_INDEFINITE);
snackbar.getView().setBackgroundColor(ContextCompat.getColor(IntroLogin.this, R.color.colorPrimaryDark));
snackbar.setActionTextColor(ContextCompat.getColor(IntroLogin.this, R.color.pure_white));
snackbar.setAction(R.string.retry_login, new View.OnClickListener() {
@Override
public void onClick(View view) {
loginButton.performClick();
}
});
snackbar.show();
}
@Override
public void onError(FacebookException error) {
Log.d("Myapp", error.toString());
Toast.makeText(IntroLogin.this, error.getMessage(), Toast.LENGTH_LONG).show();
}
});
}
: 어쩌면 이유는 내가보고 아니라고 나는 원인이 아니라 해결책을 발견
, 나는 OnActivityResult
생각이 롤리팝에서 호출 점점되지 않으며, 모든 로그.
내 응용 프로그램 클래스에서 Facebook SDK를 초기화 중이므로 문제가되지 않습니다. 어쨌든, 당신의 대답은 롤리팝으로 끝났습니다. 나는 심지어 OnSuccess에 토스트/로그를 보여 주려고했는데, 화면이나 로그에 아무 것도 표시하지 않습니다. 나는 꽤 우둔한데 왜 그런 일이 일어나는가! –
당신의 facebook sdk 버전은 무엇입니까? – rafsanahmad007
4.18 버전을 사용하고 있습니다. –