配置 OAuth 提供程式
你需要從你選擇的 OAuth 提供商處獲取一些詳細資訊。我們將關注谷歌,但 ASP.NET 的設立也允許開箱即用的 Twitter,Facebook 和微軟(顯然)。
你需要訪問 Google 開發者控制檯( https://console.developers.google.com/) 並建立專案,啟用 Google+ API(用於獲取使用者的個人資料資訊,例如他們的姓名和頭像)和在憑據部分中建立新的 OAuth 2 客戶端 ID。授權的 JavaScript 起源應該是你專案的根 URL(例如 https://yourapi.azurewebsites.net) ,重定向 URI 需要包含 ASP 的內建 Google 回撥端點( https://yourapi.azurewebsites.net/signin-google ) 以及你選擇的回撥路線( https://yourapi.azurewebsites.net/callback) 。如果出現這些錯誤,將導致 Google 出現異議。
返回 Visual Studio 專案,開啟 App_Start> Startup.Auth.cs。使用下面的程式碼替換底部帶註釋的 Google 部分,從 Google Developers Console 新增 ID 和密碼:
var googleAuthOptions = new GoogleOAuth2AuthenticationOptions()
{
ClientId = "YOUR ID",
ClientSecret = "YOUR SECRET",
Provider = new GoogleOAuth2AuthenticationProvider()
{
OnAuthenticated = (context) =>
{
context.Identity.AddClaim(new Claim("urn:google:name", context.Identity.FindFirstValue(ClaimTypes.Name)));
context.Identity.AddClaim(new Claim("urn:google:email", context.Identity.FindFirstValue(ClaimTypes.Email)));
//This following line is need to retrieve the profile image
context.Identity.AddClaim(new Claim("urn:google:accesstoken", context.AccessToken, ClaimValueTypes.String, "Google"));
return System.Threading.Tasks.Task.FromResult(0);
}
}
};
app.UseGoogleAuthentication(googleAuthOptions);
通過這些附加宣告,你可以向 Google 查詢使用者的個人資料資訊,例如他們的姓名和頭像網址。