Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
von Tom FitzMacken
In diesem Lernprogramm erfahren Sie, wie Sie eine ASP.NET MVC 4-Webanwendung erstellen, die es Benutzern ermöglicht, sich mit Anmeldeinformationen von einem externen Anbieter wie Facebook, Twitter, Microsoft oder Google anzumelden und dann einige der Funktionen dieser Anbieter in Ihre Webanwendung zu integrieren. Der Einfachheit halber konzentriert sich dieses Lernprogramm auf die Arbeit mit Anmeldeinformationen von Facebook.
Informationen zum Verwenden externer Anmeldeinformationen in einer ASP.NET MVC 5-Webanwendung finden Sie unter Erstellen einer ASP.NET MVC 5-App mit Facebook und Google OAuth2 und OpenID-Anmeldung.
Das Aktivieren dieser Anmeldeinformationen auf Ihren Websites bietet einen erheblichen Vorteil, da Millionen von Benutzern bereits Über Konten mit diesen externen Anbietern verfügen. Diese Benutzer sind möglicherweise eher geneigt, sich für Ihre Website zu registrieren, wenn sie keine neuen Anmeldeinformationen erstellen und sich merken müssen. Außerdem können Sie, nachdem sich ein Benutzer über einen dieser Anbieter angemeldet hat, soziale Vorgänge vom Anbieter integrieren.
Was Sie erstellen werden
In diesem Lernprogramm gibt es zwei Hauptziele:
- Ermöglichen Sie es einem Benutzer, sich mit Anmeldeinformationen von einem OAuth-Anbieter anzumelden.
- Rufen Sie Kontoinformationen vom Anbieter ab, und integrieren Sie diese Informationen in die Kontoregistrierung für Ihre Website.
Obwohl sich die Beispiele in diesem Lernprogramm auf die Verwendung von Facebook als Authentifizierungsanbieter konzentrieren, können Sie den Code so ändern, dass er einen der Anbieter verwendet. Die Schritte zum Implementieren eines beliebigen Anbieters ähneln den Schritten, die Sie in diesem Lernprogramm sehen. Beim Direkten Aufrufen des API-Satzes des Anbieters werden sie nur erhebliche Unterschiede feststellen.
Voraussetzungen
Oder
- Microsoft Visual Studio 2010 SP1 oder Visual Web Developer Express 2010 SP1
- ASP.NET MVC 4
Darüber hinaus wird davon ausgegangen, dass Sie grundlegende Kenntnisse über ASP.NET MVC und Visual Studio haben. Wenn Sie eine Einführung in ASP.NET MVC 4 benötigen, lesen Sie "Einführung in ASP.NET MVC 4".
Erstelle das Projekt
Erstellen Sie in Visual Studio eine neue ASP.NET MVC 4-Webanwendung, und nennen Sie sie "OAuthMVC". Sie können auf .NET Framework 4.5 oder 4 abzielen.
Wählen Sie im Fenster "Neues ASP.NET MVC 4-Projekt" die Option "Internetanwendung " aus, und lassen Sie Razor als Ansichtsmodul.
Aktivieren eines Anbieters
Wenn Sie eine MVC 4-Webanwendung mit der Internetanwendungsvorlage erstellen, wird das Projekt mit einer Datei namens AuthConfig.cs im Ordner App_Start erstellt.
Die AuthConfig-Datei enthält Code zum Registrieren von Clients für externe Authentifizierungsanbieter. Standardmäßig ist dieser Code auskommentiert, sodass keiner der externen Anbieter aktiviert ist.
public static class AuthConfig
{
public static void RegisterAuth()
{
// To let users of this site log in using their accounts from other sites such as Microsoft, Facebook, and Twitter,
// you must update this site. For more information visit https://go.microsoft.com/fwlink/?LinkID=252166
//OAuthWebSecurity.RegisterMicrosoftClient(
// clientId: "",
// clientSecret: "");
//OAuthWebSecurity.RegisterTwitterClient(
// consumerKey: "",
// consumerSecret: "");
//OAuthWebSecurity.RegisterFacebookClient(
// appId: "",
// appSecret: "");
//OAuthWebSecurity.RegisterGoogleClient();
}
}
Sie müssen diesen Code auskommentieren, um den externen Authentifizierungsclient zu verwenden. Sie kommentieren nur die Anbieter aus, die Sie in Ihre Website aufnehmen möchten. Für dieses Lernprogramm aktivieren Sie nur die Facebook-Anmeldeinformationen.
public static class AuthConfig
{
public static void RegisterAuth()
{
//OAuthWebSecurity.RegisterMicrosoftClient(
// clientId: "",
// clientSecret: "");
//OAuthWebSecurity.RegisterTwitterClient(
// consumerKey: "",
// consumerSecret: "");
OAuthWebSecurity.RegisterFacebookClient(
appId: "",
appSecret: "");
//OAuthWebSecurity.RegisterGoogleClient();
}
}
Beachten Sie im obigen Beispiel, dass die Methode leere Zeichenfolgen für die Registrierungsparameter enthält. Wenn Sie versuchen, die Anwendung jetzt auszuführen, löst die Anwendung eine Argument-Ausnahme aus, da leere Zeichenfolgen für die Parameter nicht zulässig sind. Um gültige Werte bereitzustellen, müssen Sie Ihre Website bei den externen Anbietern registrieren, wie im nächsten Abschnitt gezeigt.
Registrieren bei einem externen Anbieter
Um Benutzer mit Anmeldeinformationen von einem externen Anbieter zu authentifizieren, müssen Sie Ihre Website beim Anbieter registrieren. Wenn Sie Ihre Website registrieren, erhalten Sie die Parameter (z. B. Schlüssel oder ID und geheim), die beim Registrieren des Clients eingeschlossen werden sollen. Sie müssen über ein Konto mit den Anbietern verfügen, die Sie verwenden möchten.
In diesem Lernprogramm werden nicht alle Schritte angezeigt, die Sie zum Registrieren bei diesen Anbietern ausführen müssen. Die Schritte sind in der Regel nicht schwierig. Um Ihre Website erfolgreich zu registrieren, folgen Sie den Anweisungen auf diesen Websites. Informationen zu den ersten Schritten bei der Registrierung Ihrer Website finden Sie auf der Entwicklerwebsite für:
Wenn Sie Ihre Website bei Facebook registrieren, können Sie "localhost" für die Websitedomäne und "http://localhost/" für die URL bereitstellen, wie in der abbildung unten dargestellt. Die Verwendung von localhost funktioniert mit den meisten Anbietern, funktioniert aber derzeit nicht mit dem Microsoft-Anbieter. Für den Microsoft-Anbieter müssen Sie eine gültige Website-URL angeben.
In der vorherigen Abbildung wurden die Werte für die App-ID, den geheimen App-Schlüssel und die Kontakt-E-Mail entfernt. Wenn Sie Ihre Website tatsächlich registrieren, sind diese Werte vorhanden. Sie möchten die Werte für die App-ID und den geheimen App-Schlüssel notieren, da Sie sie zu Ihrer Anwendung hinzufügen.
Erstellen von Testbenutzern
Wenn Sie nicht daran denken, ein vorhandenes Facebook-Konto zum Testen Ihrer Website zu verwenden, können Sie diesen Abschnitt überspringen.
Sie können auf der Facebook-App-Verwaltungsseite ganz einfach Testbenutzer für Ihre Anwendung erstellen. Sie können diese Testkonten verwenden, um sich bei Ihrer Website anzumelden. Sie erstellen Testbenutzer, indem Sie im linken Navigationsbereich auf den Link "Rollen " und auf den Link " Erstellen" klicken.
Die Facebook-Website erstellt automatisch die Anzahl der Testkonten, die Sie anfordern.
Hinzufügen der Anwendungs-ID und des geheimen Schlüssels vom Anbieter
Nachdem Sie die ID und den geheimen Schlüssel von Facebook erhalten haben, wechseln Sie zurück zur AuthConfig-Datei, und fügen Sie sie als Parameterwerte hinzu. Die unten gezeigten Werte sind keine echten Werte.
public static class AuthConfig
{
public static void RegisterAuth()
{
//OAuthWebSecurity.RegisterMicrosoftClient(
// clientId: "",
// clientSecret: "");
//OAuthWebSecurity.RegisterTwitterClient(
// consumerKey: "",
// consumerSecret: "");
//OAuthWebSecurity.RegisterFacebookClient(
// appId: "",
// appSecret: "");
//OAuthWebSecurity.RegisterGoogleClient();
}
}
Anmelden mit externen Anmeldeinformationen
Das ist alles, was Sie tun müssen, um externe Anmeldeinformationen in Ihrer Website zu aktivieren. Führen Sie Ihre Anwendung aus, und klicken Sie in der oberen rechten Ecke auf den Anmeldelink. Die Vorlage erkennt automatisch, dass Sie Facebook als Anbieter registriert haben und eine Schaltfläche für den Anbieter enthält. Wenn Sie mehrere Anbieter registrieren, wird automatisch eine Schaltfläche für jedes Anbieter hinzugefügt.
In diesem Lernprogramm wird nicht erläutert, wie die Anmeldeschaltflächen für die externen Anbieter angepasst werden. Informationen hierzu finden Sie unter Anpassen der Anmelde-UI bei Verwendung von OAuth/OpenID.
Klicken Sie auf die Facebook-Schaltfläche, um sich mit Facebook-Anmeldeinformationen anzumelden. Wenn Sie einen der externen Anbieter auswählen, werden Sie zu dieser Website umgeleitet und von diesem Dienst aufgefordert, sich anzumelden.
Die folgende Abbildung zeigt den Anmeldebildschirm für Facebook. Es weist darauf hin, dass Sie Ihr Facebook-Konto verwenden, um sich bei einer Website mit dem Namen oauthmvcexample anzumelden.
Nach der Anmeldung mit Facebook-Anmeldeinformationen informiert eine Seite den Benutzer darüber, dass die Website Zugriff auf grundlegende Informationen hat.
Nachdem Sie "Gehe zu App" ausgewählt haben, muss sich der Benutzer für die Website registrieren. Die folgende Abbildung zeigt die Registrierungsseite, nachdem sich ein Benutzer mit Facebook-Anmeldeinformationen angemeldet hat. Der Benutzername wird in der Regel mit einem Namen vom Anbieter vorgefüllt.
Klicken Sie auf "Registrieren ", um die Registrierung abzuschließen. Schließen Sie den Browser.
Sie können sehen, dass das neue Konto zu Ihrer Datenbank hinzugefügt wurde. Öffnen Sie im Server-Explorer die DefaultConnection-Datenbank , und öffnen Sie den Ordner "Tabellen ".
Klicken Sie mit der rechten Maustaste auf die Tabelle "UserProfile ", und wählen Sie " Tabellendaten anzeigen" aus.
Das neue Konto, das Sie hinzugefügt haben, wird angezeigt. Sehen Sie sich die Daten in webpage_OAuthMembership Tabelle an. Weitere Daten im Zusammenhang mit dem externen Anbieter für das konto, das Sie soeben hinzugefügt haben, werden angezeigt.
Wenn Sie nur die externe Authentifizierung aktivieren möchten, sind Sie fertig. Sie können jedoch informationen vom Anbieter weiter in den neuen Benutzerregistrierungsprozess integrieren, wie in den folgenden Abschnitten dargestellt.
Erstellen von Modellen für zusätzliche Benutzerinformationen
Wie Sie in den vorherigen Abschnitten bemerkt haben, müssen Sie keine zusätzlichen Informationen abrufen, damit die integrierte Kontoregistrierung funktioniert. Die meisten externen Anbieter übergeben jedoch zusätzliche Informationen über den Benutzer. In den folgenden Abschnitten wird gezeigt, wie Diese Informationen aufbewahrt und in einer Datenbank gespeichert werden. Insbesondere behalten Sie Werte für den vollständigen Namen des Benutzers, den URI der persönlichen Webseite des Benutzers und einen Wert, der angibt, ob Facebook das Konto überprüft hat.
Sie verwenden Code First Migrations, um eine Tabelle hinzuzufügen, in der zusätzliche Benutzerinformationen gespeichert werden. Sie fügen die Tabelle zu einer vorhandenen Datenbank hinzu, daher müssen Sie zuerst eine Momentaufnahme der aktuellen Datenbank erstellen. Durch Erstellen einer Momentaufnahme der aktuellen Datenbank können Sie später eine Migration erstellen, die nur die neue Tabelle enthält. So erstellen Sie eine Momentaufnahme der aktuellen Datenbank:
- Öffnen der Paket-Manager-Konsole
- Ausführen des Befehls "Enable-Migrationen"
- Führen Sie den Befehl add-migration initial –IgnoreChanges aus
- Führen Sie den Befehl update-database aus
Nun fügen Sie die neuen Eigenschaften hinzu. Öffnen Sie im Ordner "Models" die AccountModels.cs-Datei, und suchen Sie die RegisterExternalLoginModel-Klasse. Die RegisterExternalLoginModel-Klasse enthält Werte, die vom Authentifizierungsanbieter zurückgegeben werden. Fügen Sie Eigenschaften namens "FullName" und "Link" hinzu, wie unten hervorgehoben.
public class RegisterExternalLoginModel
{
[Required]
[Display(Name = "User name")]
public string UserName { get; set; }
public string ExternalLoginData { get; set; }
[Display(Name = "Full name")]
public string FullName { get; set; }
[Display(Name = "Personal page link")]
public string Link { get; set; }
}
Fügen Sie auch in AccountModels.cs eine neue Klasse namens ExtraUserInformation hinzu. Diese Klasse stellt die neue Tabelle dar, die in der Datenbank erstellt wird.
[Table("ExtraUserInformation")]
public class ExternalUserInformation
{
public int Id { get; set; }
public int UserId { get; set; }
public string FullName { get; set; }
public string Link { get; set; }
public bool? Verified { get; set; }
}
Fügen Sie in der UsersContext-Klasse den unten hervorgehobenen Code hinzu, um eine DbSet-Eigenschaft für die neue Klasse zu erstellen.
public class UsersContext : DbContext
{
public UsersContext()
: base("DefaultConnection")
{
}
public DbSet<UserProfile> UserProfiles { get; set; }
public DbSet<ExternalUserInformation> ExternalUsers { get; set; }
}
Sie können jetzt die neue Tabelle erstellen. Öffnen Sie die Paket-Manager-Konsole erneut, und dieses Mal:
- Führen Sie den Befehl add-migration AddExtraUserInformation aus.
- Führen Sie den Befehl update-database aus.
Die neue Tabelle ist jetzt in der Datenbank vorhanden.
Abrufen der zusätzlichen Daten
Es gibt zwei Möglichkeiten, zusätzliche Benutzerdaten abzurufen. Die erste Möglichkeit besteht darin, Benutzerdaten aufzubewahren, die während der Authentifizierungsanforderung standardmäßig zurückgesendet werden. Die zweite Möglichkeit besteht darin, die Anbieter-API gezielt aufzurufen und weitere Informationen anzufordern. Werte für FullName und Link werden automatisch von Facebook zurückgesendet. Ein Wert, der angibt, ob Facebook das Konto überprüft hat, über einen Aufruf der Facebook-API abgerufen wird. Zuerst füllen Sie Werte für FullName und Link auf, und später erhalten Sie den überprüften Wert.
Um die zusätzlichen Benutzerdaten abzurufen, öffnen Sie die AccountController.cs Datei im Ordner "Controller ".
Diese Datei enthält die Logik zum Protokollieren, Registrieren und Verwalten von Konten. Beachten Sie insbesondere die Methoden "ExternalLoginCallback " und "ExternalLoginConfirmation". In diesen Methoden können Sie Code hinzufügen, um externe Anmeldevorgänge für Ihre Anwendung anzupassen. Die erste Zeile der ExternalLoginCallback-Methode enthält:
AuthenticationResult result = OAuthWebSecurity.VerifyAuthentication(
Url.Action("ExternalLoginCallback", new { ReturnUrl = returnUrl }));
Zusätzliche Benutzerdaten werden in der ExtraData-Eigenschaft des AuthenticationResult-Objekts zurückgegeben, das von der VerifyAuthentication-Methode zurückgegeben wird. Der Facebook-Client enthält die folgenden Werte in der ExtraData-Eigenschaft :
- id
- Name
- Link
- Geschlecht
- Zugriffstoken
Andere Anbieter haben ähnliche, aber geringfügig andere Daten in der ExtraData-Property.
Wenn der Benutzer neu bei Ihrer Website ist, rufen Sie einige der zusätzlichen Daten ab und übergeben diese Daten an die Bestätigungsansicht. Der letzte Codeblock in der Methode wird nur ausgeführt, wenn der Benutzer neu auf Ihrer Website ist. Ersetzen Sie die folgende Zeile:
return View("ExternalLoginConfirmation", new RegisterExternalLoginModel
{
UserName = result.UserName,
ExternalLoginData = loginData
});
Mit dieser Zeile:
return View("ExternalLoginConfirmation", new RegisterExternalLoginModel
{
UserName = result.UserName,
ExternalLoginData = loginData,
FullName = result.ExtraData["name"],
Link = result.ExtraData["link"]
});
Diese Änderung enthält lediglich Werte für die Eigenschaften "FullName" und "Link".
Ändern Sie den Code in der ExternalLoginConfirmation-Methode wie unten hervorgehoben, um die zusätzlichen Benutzerinformationen zu speichern.
if (user == null)
{
// Insert name into the profile table
UserProfile newUser = db.UserProfiles.Add(new UserProfile { UserName = model.UserName });
db.SaveChanges();
db.ExternalUsers.Add(new ExternalUserInformation
{
UserId = newUser.UserId,
FullName = model.FullName,
Link = model.Link
});
db.SaveChanges();
OAuthWebSecurity.CreateOrUpdateAccount(provider, providerUserId, model.UserName);
OAuthWebSecurity.Login(provider, providerUserId, createPersistentCookie: false);
return RedirectToLocal(returnUrl);
}
else
{
ModelState.AddModelError("UserName", "User name already exists. Please enter a different user name.");
}
Anpassen der Ansicht
Die zusätzlichen Benutzerdaten, die Sie vom Anbieter abrufen, werden auf der Registrierungsseite angezeigt.
Öffnen Sie im Ansichten/Account-Ordner ExternalLoginConfirmation.cshtml. Fügen Sie unter dem vorhandenen Feld für den Benutzernamen Felder für "FullName", "Link" und "PictureLink" hinzu.
<li>
@Html.LabelFor(m => m.FullName)
@Html.TextBoxFor(m => m.FullName)
</li>
<li>
@Html.LabelFor(m => m.Link)
@Html.TextBoxFor(m => m.Link)
</li>
Sie sind jetzt fast bereit, die Anwendung auszuführen und einen neuen Benutzer mit den gespeicherten zusätzlichen Informationen zu registrieren. Sie müssen über ein Konto verfügen, das noch nicht bei der Website registriert ist. Sie können entweder ein anderes Testkonto verwenden oder die Zeilen in userProfile und webpages_OAuthMembership Tabellen für das Konto löschen, das Sie wiederverwenden möchten. Durch das Löschen dieser Zeilen stellen Sie sicher, dass das Konto erneut registriert ist.
Führen Sie die Anwendung aus, und registrieren Sie den neuen Benutzer. Beachten Sie, dass die Bestätigungsseite diesmal weitere Werte enthält.
Schließen Sie nach Abschluss der Registrierung den Browser. Suchen Sie in der Datenbank, um die neuen Werte in der Tabelle "ExtraUserInformation " zu beachten.
Installieren des NuGet-Pakets für die Facebook-API
Facebook stellt eine API bereit, die Sie aufrufen können, um Vorgänge auszuführen. Sie können die Facebook-API entweder aufrufen, indem Sie das Senden von HTTP-Anforderungen leiten oder ein NuGet-Paket installieren, das das Senden dieser Anforderungen erleichtert. Die Verwendung eines NuGet-Pakets wird in diesem Lernprogramm gezeigt, aber die Installation des NuGet-Pakets ist nicht unbedingt erforderlich. In diesem Lernprogramm wird gezeigt, wie Sie das C#-SDK-Paket von Facebook verwenden. Es gibt andere NuGet-Pakete, die beim Aufrufen der Facebook-API helfen.
Wählen Sie im Fenster "NuGet-Pakete verwalten " das C#-SDK-Paket von Facebook aus.
Sie verwenden das Facebook C#-SDK, um einen Vorgang aufzurufen, der das Zugriffstoken für den Benutzer erfordert. Im nächsten Abschnitt wird gezeigt, wie Sie das Zugriffstoken abrufen.
Abrufen des Zugriffstokens
Die meisten externen Anbieter übergeben ein Zugriffstoken zurück, nachdem die Anmeldeinformationen des Benutzers überprüft wurden. Dieses Zugriffstoken ist sehr wichtig, da es Ihnen ermöglicht, Vorgänge aufzurufen, die nur authentifizierten Benutzern zur Verfügung stehen. Daher ist das Abrufen und Speichern des Zugriffstokens unerlässlich, wenn Sie mehr Funktionen bereitstellen möchten.
Je nach externem Anbieter kann das Zugriffstoken nur für einen begrenzten Zeitraum gültig sein. Um sicherzustellen, dass Sie über ein gültiges Zugriffstoken verfügen, rufen Sie es jedes Mal ab, wenn sich der Benutzer anmeldet, und speichert es als Sitzungswert, anstatt es in einer Datenbank zu speichern.
In der ExternalLoginCallback-Methode wird das Zugriffstoken auch in der ExtraData-Eigenschaft des AuthenticationResult-Objekts übergeben. Fügen Sie den hervorgehobenen Code zu ExternalLoginCallback hinzu, um das Zugriffstoken im Session-Objekt zu speichern. Dieser Code wird jedes Mal ausgeführt, wenn sich der Benutzer mit einem Facebook-Konto anmeldet.
[AllowAnonymous]
public ActionResult ExternalLoginCallback(string returnUrl)
{
AuthenticationResult result = OAuthWebSecurity.VerifyAuthentication(
Url.Action("ExternalLoginCallback", new { ReturnUrl = returnUrl }));
if (!result.IsSuccessful)
{
return RedirectToAction("ExternalLoginFailure");
}
if (result.ExtraData.Keys.Contains("accesstoken"))
{
Session["facebooktoken"] = result.ExtraData["accesstoken"];
}
if (OAuthWebSecurity.Login(
result.Provider,
result.ProviderUserId,
createPersistentCookie: false))
{
return RedirectToLocal(returnUrl);
}
if (User.Identity.IsAuthenticated)
{
// If the current user is logged in add the new account
OAuthWebSecurity.CreateOrUpdateAccount(
result.Provider,
result.ProviderUserId,
User.Identity.Name);
return RedirectToLocal(returnUrl);
}
else
{
// User is new, ask for their desired membership name
string loginData = OAuthWebSecurity.SerializeProviderUserId(
result.Provider,
result.ProviderUserId);
ViewBag.ProviderDisplayName =
OAuthWebSecurity.GetOAuthClientData(result.Provider).DisplayName;
ViewBag.ReturnUrl = returnUrl;
return View("ExternalLoginConfirmation", new RegisterExternalLoginModel
{
UserName = result.UserName,
ExternalLoginData = loginData,
FullName = result.ExtraData["name"],
Link = result.ExtraData["link"]
});
}
}
Obwohl in diesem Beispiel ein Zugriffstoken von Facebook abgerufen wird, können Sie das Zugriffstoken von jedem externen Anbieter über denselben Schlüssel namens "accesstoken" abrufen.
Abmelden
Die Standardmäßige LogOff-Methode protokolliert den Benutzer aus Ihrer Anwendung, meldet den Benutzer jedoch nicht vom externen Anbieter ab. Um den Benutzer bei Facebook abzumelden und zu verhindern, dass das Token beibehalten wird, nachdem sich der Benutzer abgemeldet hat, können Sie der LogOff-Methode im AccountController den folgenden hervorgehobenen Code hinzufügen.
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult LogOff()
{
WebSecurity.Logout();
if (Session["facebooktoken"] != null)
{
var fb = new Facebook.FacebookClient();
string accessToken = Session["facebooktoken"] as string;
var logoutUrl = fb.GetLogoutUrl(new { access_token = accessToken, next = "http://localhost:39852/" });
Session.RemoveAll();
return Redirect(logoutUrl.AbsoluteUri);
}
return RedirectToAction("Index", "Home");
}
Der Wert, den next Sie im Parameter angeben, ist die URL, die verwendet werden soll, nachdem sich der Benutzer bei Facebook abgemeldet hat. Beim Testen auf Ihrem lokalen Computer würden Sie die richtige Portnummer für Ihren lokalen Standort angeben. In der Produktion würden Sie eine Standardseite bereitstellen, z. B. contoso.com.
Abrufen von Benutzerinformationen, die das Zugriffstoken erfordern
Nachdem Sie das Zugriffstoken gespeichert und das Facebook C#SDK-Paket installiert haben, können Sie es zusammen verwenden, um zusätzliche Benutzerinformationen von Facebook anzufordern. Erstellen Sie in der ExternalLoginConfirmation-Methode eine Instanz der FacebookClient-Klasse , indem Sie den Wert des Zugriffstokens übergeben. Fordern Sie den Wert der überprüften Eigenschaft für den aktuellen authentifizierten Benutzer an. Die überprüfte Eigenschaft gibt an, ob Facebook das Konto auf andere Art überprüft hat, z. B. das Senden einer Nachricht an ein Mobiltelefon. Speichern Sie diesen Wert in der Datenbank.
if (user == null)
{
// Insert name into the profile table
UserProfile newUser = db.UserProfiles.Add(new UserProfile { UserName = model.UserName });
db.SaveChanges();
bool facebookVerified;
var client = new Facebook.FacebookClient(Session["facebooktoken"].ToString());
dynamic response = client.Get("me", new { fields = "verified" });
if (response.ContainsKey("verified"))
{
facebookVerified = response["verified"];
}
else
{
facebookVerified = false;
}
db.ExternalUsers.Add(new ExternalUserInformation
{
UserId = newUser.UserId,
FullName = model.FullName,
Link = model.Link,
Verified = facebookVerified
});
db.SaveChanges();
OAuthWebSecurity.CreateOrUpdateAccount(provider, providerUserId, model.UserName);
OAuthWebSecurity.Login(provider, providerUserId, createPersistentCookie: false);
return RedirectToLocal(returnUrl);
}
Sie müssen entweder die Datensätze in der Datenbank für den Benutzer löschen oder ein anderes Facebook-Konto verwenden.
Führen Sie die Anwendung aus, und registrieren Sie den neuen Benutzer. Sehen Sie sich die Tabelle "ExtraUserInformation " an, um den Wert für die überprüfte Eigenschaft anzuzeigen.
Fazit
In diesem Lernprogramm haben Sie eine Website erstellt, die mit Facebook für die Benutzerauthentifizierung und Registrierungsdaten integriert ist. Sie haben das Standardverhalten kennengelernt, das für MVC 4-Webanwendung eingerichtet ist, und wie Sie dieses Standardverhalten anpassen.