配置 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 查詢使用者的個人資料資訊,例如他們的姓名和頭像網址。