In meiner App versuche ich Facebook Login zu implementieren. Ich habe nach dem Splash eine IntroLogin-Aktivität, um festzustellen, ob der Benutzer bereits angemeldet ist oder nicht. Wenn der Benutzer bereits angemeldet ist, wird MainActivity gerade geladen. Andernfalls wird der Benutzer aufgefordert, sich anzumelden.Kann nicht mit Facebook SDK anmelden
Meine Methode zum Ermitteln, ob der Benutzer angemeldet ist oder nicht funktioniert gut in Android 6+. In Android Lollipop wird die App jedoch geschlossen, nachdem sich der Benutzer angemeldet hat (der Nutzer erhält eine App-Authentifizierung, um seine Informationen im Popup-Fenster zu verwenden). Ich bekomme keine FCs oder irgendwelche Nachrichten im Log. Es schließt einfach. Selbst wenn der Benutzer die App neu startet, wird erneut zur Anmeldung aufgefordert.
Meine IntroLogin Aktivität:
@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();
}
});
}
UPDATE:
ich die Ursache gefunden, aber nicht die Lösung, ich glaube OnActivityResult
nicht in Lutscher immer genannt, dass vielleicht der Grund, warum ich nicht zu sehen bin jedes Protokoll.
Ich initialisiere Facebook SDK in meiner Anwendungsklasse, also denke ich, dass das nicht das Problem ist. Wie auch immer, ich habe deine Antwort versucht, es ist immer noch in Lollipop geschlossen. Ich habe sogar versucht, OnSuccess zu zeigen/einzuloggen, es zeigt weder auf dem Bildschirm noch auf dem Log etwas. Ich bin ziemlich ahnungslos, warum passiert das! –
Was ist deine Facebook Sdk Version? – rafsanahmad007
Ich benutze 4.18 Version –