ASP.NET MVC 5 (VS2013 final): Facebook-login mit OWIN ausfällt (loginInfo ist null)
Habe ich installiert, die VS2013 endgültige Version, die veröffentlicht wurden, gestern, und ich bin versucht, ein Beispiel zu arbeiten, wo ich das aktivieren einer externen Facebook-login. Meine erste Frage:
In diesem controller-code (die ich nicht berühren und Links ist aus der Beispiel-Vorlage):
//
//GET: /Account/ExternalLoginCallback
[AllowAnonymous]
public async Task<ActionResult> ExternalLoginCallback(string returnUrl)
{
var loginInfo = await AuthenticationManager.GetExternalLoginInfoAsync();
if (loginInfo == null)
{
return RedirectToAction("Login");
}
Ich einen Haltepunkt auf die Zeile erwarten AuthenticationManager.GetExternalLoginInfoAsync(). Der code gibt (nachdem ich mein Facebook-login) und "loginInfo" null ist. In der Benutzeroberfläche der login-Seite wird weiterhin angezeigt, keine Veränderung. Wie kann ich Debuggen? Ich war auf der Suche nach dem code, der in der GetExternalLoginInfoAsync() aber laut diesem thread:
Wo ist Microsoft.AspNet.Identität.Owin.AuthenticationManager in Asp.Net Identität RTM-version?
AuthenticationManager ist jetzt Weg. (Dies scheint nicht der Fall zu sein, je oben).
Meine zweite Frage: Ist jemand in der Lage, um die Probe zu bekommen arbeiten mit Facebook anmelden mit keine änderungen an der ASP.NET MVC5 Beispielcode (andere als Kommentarzeichen app.UseFacebookAuthentication und das ausfüllen der FB-app details)? (Sie müssen um einen alias zu konfigurieren host mit Facebook, wie "localtest.mir", und konfigurieren Sie es mit dem IIS express.
Vielen Dank für jede Hilfe...
-Ben
InformationsquelleAutor BenjiFB | 2013-10-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich hatte dieses problem während der Authentifizierung bei Google (OpenID , OAuth nicht). Also gibt es wirklich nichts Durcheinander bringen, aber sicher genug, hörte es auf zu arbeiten, nachdem einige einfache änderungen im code, um session-Variablen. Mit fiddler habe ich festgestellt, dass Google in der Tat war die Rückkehr gültigen Informationen.
Jemand schlauer als ich dachte aus meiner Frage und beschreibt den fix hier.
ASP.NET_SessionId + OWIN Cookies nicht senden an browser
Alle die ich tun musste, war, fügen Sie
Session["salt"] = "salt";
auf das Konto/Login-controller, und viola es magisch seine Arbeit perfekt. Nicht sicher, ob dies ist Ihre genaue Problem war, aber das war mir.InformationsquelleAutor MarloBello
Ok, das war dumm von mir. First off, ich begann debugging mit Fiddler, und sah, dass Facebook senden war wieder dieses:
WWW-Authenticate: OAuth "Facebook-Plattform" "invalid_request" "Anfrage ungültig ist, weil die app secret ist die gleiche wie die client-token"
Diese Nachricht wurde ungenau, aber nach ihm zu suchen, fand ich einen anderen thread, wo ein user angegeben, dass durch das zurücksetzen der app secret das problem gelöst. (Ich hatte nicht verwendet diese app in eine lange Zeit, so dass möglicherweise verwandt gewesen sein.) Also nahm ich diese Schritte, aber immer noch sah das problem. Aber die Botschaft in Fiddler geändert:
WWW-Authenticate: OAuth "Facebook-Plattform" "invalid_request" "Anfrage ungültig ist, weil die app ist so konfiguriert, dass als desktop-app"
In der Tat, die app wurde falsch konfiguriert in Facebook. Ich legen Sie es auf eine web-app, und es funktioniert perfekt jetzt! Hoffentlich kann anderen helfen, dies war nicht klar, bis das brennen von Fiddler.
Ich würde die Verwendung eines HTTP-debugger wie fiddler, um zu sehen, was passiert unter der Decke. Das ist, wie ich erfuhr, was geschehen war für mich.
InformationsquelleAutor BenjiFB
Ich fing an dieses in die neuesten VS 2013.3 Vorlage und erkannte, dass die Authentifizierung nicht spielen schön mit FormsAuthentication, dass ich unnötig portiert aus einem meiner anderen Projekte. Hier ist, was ich Tat, um es zu beheben:
Hinzugefügt
<system.web><authentication mode="None" />...
Hinzugefügt
<system.webServer><modules><remove name="FormsAuthentication" /></modules>...
Es hilft mir auch, in meinem Fall die Authentifizierung im windows-Modus...
InformationsquelleAutor parliament
Für mich gescheitert, weil ich davon ausgegangen, dass facebook immer Zugriff hat Geburtstag-Eigenschaft, aber dies ist nicht der Fall:
Diese erstreckt sich auf so ziemlich alles:
1) die Benutzer haben keinen Nachnamen (erlaubt)
2) einige der Benutzer nicht über die E-Mail im fb (erlaubt)
3) einige der Benutzer nicht geben Sie heraus, Geburtstag,
Haben Sie sich um alles kümmern.
InformationsquelleAutor Erti-Chris Eelmaa
fügte ich microsoft.Sicherheit.owin.facebook Referenz auf Projekt fron NuGet-Paket-manager und es begann gut.
InformationsquelleAutor Prashant Tripathi
Ich hatte das gleiche problem, weil ich gar nicht aktiviert, die API in google. Fiddler wurde wieder ein Fehler-status von access_denied.
Hatte ich das Projekt erstellt und habe die client-id und geheime Daten, aber Sie müssen auch gehen, um die Entwickler-Konsole aktivieren und die Google+ - api.
InformationsquelleAutor Liam
Schließlich fand ich die Antwort für
OWIN
schlägt die Authentifizierung fehl.Ich möchte wirklich wissen, was passiert mit meinem
ASP.NET MVC 5
Anwendung, wenn ich versuche, fügen Sie Facebook-Authentifizierung. Nachdem ich versuchte jede Lösung gibt, auf Internet.Nur ändern Sie Ihre Facebook-App mit der neuen Facebook-Developer-App oder ändern der app-Geheimnis von Facebook-developer-Website.
InformationsquelleAutor Jigar Patel
Konnte ich alles sehen, arbeiten in Fiddler mit der info, erforderlich zum Auffüllen der loginInfo vorhanden, aber noch immer null zurückgegeben, die von GetExternalLoginInfoAsnyc.
Wenn ich Hinzugefügt die folgende Zeile in die ConfigureAuth Methode in Startup.Auth, loginInfo war nicht mehr null.
InformationsquelleAutor Scott Munro