Android Facebook SDK 4.0 Login ohne Facebook App
Habe ich Probleme mit der Webansicht login für Facebook auf Android.
Ich verfolgt habe in den tutorials und der login funktioniert perfekt, wenn der Nutzer hat die Facebook-app installiert. Wenn die Facebook-app nicht installiert ist, ist die webview für facebook login erscheint; jedoch, nach der Anmeldung und dem akzeptieren der Berechtigungen, die webview einfach leitet Sie zurück zum login-Bildschirm. Es geht nie zurück zu meiner app.
Hat sonst noch jemand diesem problem begegnet?
FacebookSdk.sdkInitialize(this);
profileTracker = new ProfileTracker() {
@Override
protected void onCurrentProfileChanged(Profile profile, Profile profile2) {
if (profile2 != null) {
loggedIn(profile2);
} else {
loggedOut();
}
}
};
accessTokenTracker = new AccessTokenTracker() {
@Override
protected void onCurrentAccessTokenChanged(AccessToken accessToken, AccessToken accessToken2) {
Profile.fetchProfileForCurrentAccessToken();
}
};
callbackManager = CallbackManager.Factory.create();
LoginManager.getInstance().registerCallback(callbackManager,
new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
//App code
getProfileInfo();
}
@Override
public void onCancel() {
//App code
Log.e("Facebook Login", "Login Cancelled");
loggedOut();
}
@Override
public void onError(FacebookException exception) {
//App code
Log.e("Facebook Login", "Failed to Login " + exception.toString());
loggedOut();
}
});
Blick auf die Protokolle, ohne Filter, während der login stattfindet, sehe ich ein paar von möglicherweise relevanten Protokolle.
I/chromium﹕ [INFO:CONSOLE(0)] "event.returnValue is deprecated. Please use the standard event.preventDefault() instead.", source: (0)
I/Auth.Core﹕ [TokenCache] Missing snowballing token: no granted scopes set.
- Genau wie werden Sie authentifiziert? Ich bin kein Android-Entwickler, aber ich bin mir ziemlich sicher, dass dies hat zu tun mit Ihrer Gültigen OAuth Redirect-URI. Siehe developers.facebook.com/apps/<Ihr app-id>/Einstellungen/erweitert/
- teilen Sie Ihren code für die Facebook-Anmeldung
- Ein Ungültiger redirect-URI führen sollte, eine Fehlermeldung vor dem Benutzer akzeptieren können Berechtigungen schon.
- Ich bin mir ziemlich sicher, es hat nichts zu tun mit dem code, aber ich poste es trotzdem. Es Bestand login-code vom neuen Facebook SDK. Wenn der Nutzer der facebook-app, die Anmeldung funktioniert einwandfrei. Es ist nur, wenn der Benutzer geht durch das web-login. Es noch nie betritt onActivityResult
- Sollte dies funktionieren. Welches Gerät Sie testen auf? Passiert das auf mehreren Geräten? Gibt es etwas in der logcat?
- vielen Dank für Ihre Antwort. Es passiert auf allen Geräten, die ich Teste (Samsung und Nexus). Es gibt nichts aus meiner Anwendung im logcat, aber ich habe nicht geprüft, die ungefilterten Nachrichten.
- Ich habe gerade versucht es, und ich sehe nur ein paar der möglichen relevanten Protokolle (es ist wirklich schwer zu sagen). Ich werde aktualisieren, in meiner Frage.
- Tun die Beispiel-apps (das Schiff mit dem SDK) für Sie arbeiten?
- Vielen Dank für deine Hilfe @MingLi
- Gleiche geschieht mit meiner app. Es arbeitete, bevor, nicht sicher, was Los ist. Ich bin mit dem callbackManager und in onActivityResult ich habe die callbackManager nennen.
- für mich, mein problem war das überschreiben der Schaltfläche, die auf klicken Sie auf und ruft Login manuell über den manager. Wenn Sie noch Fragen haben, ich würde nicht dagegen, einen Blick auf ihn!
- Vielen Dank für Ihr Angebot. Was ich getan habe, ist zu gehen zurück auf die live-version unserer app, nur um zu sehen, ob es etwas, was ich geändert habe, da bin ich mir 100% sicher, es war vor der Arbeit. Und Nein, es funktioniert nicht jetzt. Es ist so, wie wenn sich etwas geändert hat auf den dialog Facebook öffnet. Der exakt gleiche code war in Ordnung arbeiten.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, dass Sie vergessen haben, den callbackManager für den richtigen workflow. Verwendet CallbackManager für die Registrierung von callback-Methode muss aufgerufen werden, in onActivityResult der host-Aktivität. Die Tätigkeit sollte nicht in singleInstance launchMode, weil es nicht in der Lage zu starten startActivityForResult(facebook intern startet FacebookActivity mit dieser Methode).
So fügen Sie zu Ihrer Tätigkeit:
Was verursacht das problem war, dass ich das überschreiben der onclicklistener der login-button zum Aufruf der login-Funktion der LoginManager. Einfach nicht.
Angesichts Ihrer Beschreibung, ich Stelle mir vor, dass Sie entweder nicht an das internet angeschlossen oder, dass Sie nicht sind, handling der login-Rückrufe.
Hier ist ein volle facebook 4.0.+ login-Beispiel.
Bearbeiten Sie auf Basis Ihres Codes:
Müssen Sie
FacebookSdk.sdkInitialize(this);
vorsetContentView()
.Dies ist ein Beispiel ohne Verwendung von Facebook app und wenn Sie schließen Sie Ihre app und öffnen Sie es erneut, werden Sie automatisch angemeldet, es sei denn, Sie loggen sich aus.
Hier bekommen wir die Benutzer E-Mail-Adresse und Freundesliste nach dem log-in.