Ich versuche, die ASP.Net MVC 5 Google OAuth2-Authentifizierung korrekt auszuführen.
Wenn ich eine GoogleOauth2AuthenticationOptions-Option ohne einen Bereich einstelle, kann ich mich erfolgreich anmelden.
%Vor%Dann gibt dieser Aufruf ein ExternalLoginInfo-Objekt mit allen Eigenschaften
zurück %Vor%Wenn ich jedoch einen Bereich hinzufügen , bekomme ich keine Login-Informationen zurück. Es ist nur null.
%Vor%Dann gibt der Aufruf zum Abrufen externer Informationen nur null zurück .
%Vor%In der Google-Entwicklerkonsole sind die folgenden APIs aktiviert:
Beim Hinzufügen von Optionen zu den Optionen wird GetExternalLoginInfoAsync unterbrochen.
Wenn jemand immer noch Probleme mit dem neuesten Microsoft hat OWIN Middleware (3.0.0 +) ...
Ich habe von Fiddler gemerkt, dass der folgende Bereich standardmäßig an accounts.google.com gesendet wird:
%Vor%Wenn Sie über GoogleAOuth2AuthenticationOptions.Scope.Add (...) eigene Scope (s) hinzufügen, wird der Scope zu:
%Vor%Daher müssen Sie auch die Standardbereiche hinzufügen (oder zumindest hat dies das Problem für mich behoben):
%Vor%Also, ich habe das herausgefunden, mit viel Hilfe von Ссылка . Es stellt sich heraus, dass der integrierte Google-Authentifizierungsanbieter für MVC nur openId ist. Deshalb hat das Hinzufügen eines Oszilloskops es kaputt gemacht. Mit Fiddler konnte ich die GET-Anfrage an accounts.google.com sehen, die in der Abfragezeichenfolge "scope = openid" enthielt.
Wenn Sie im obigen Link zum GooglePlusOAuth2-Anbieter wechseln oder auf Nuget Ссылка klicken und den Anbieter verwenden Name von "GooglePlus", konnte ich erfolgreich die Bereiche hinzufügen und bekomme immer noch die Login-Informationen von GetExternalLoginInfoAsync.
Die Änderungen, die Google an seinen Authentifizierungsmechanismen vorgenommen hat, waren widerspiegelt in Version 3.0.0 von Microsoft Owin Middleware. Wie Sie richtig festgestellt haben, wurde der OAuth-Endpunkt durch eine der Änderungen auf Google+ verschoben ( Ссылка ).
Also, der Schlüssel ist:
Tags und Links asp.net-mvc oauth-2.0 asp.net-identity google-oauth asp.net-mvc-5