[ASP.NET] 使用 DotNetOpenAuth 整合 Google OAuth 驗証
透過 DotNetOpenAuth 這一系列的元件,至少要.NET 4.0,就能用 OAuth 整合 Google / Facebook
我開了一個空白的 Web Form 專案,裡面有以下檔案
Global.asax
Default.aspx
Login.aspx
GoogleCallBack.aspx
在 NuGet 裡,安裝以下元件
DotNetOpenAuth
DotNetOpenAuth.AspNet
Microsoft.AspNet.Membership.OpenAuth
@Global.asax
{ OpenAuth.AuthenticationClients.AddGoogle(); }
@Default.aspx
有驗証成功就秀出名稱,沒有則導回登入頁面
{ if (User.Identity.IsAuthenticated) this.Response.Write(User.Identity.Name); else this.Server.Transfer(FormsAuthentication.LoginUrl); }
@Login.aspx
導向 google 的登入頁面,並設定接收資料的頁面
{ OpenAuth.RequestAuthentication("google", "~/GoogleCallBack.aspx"); }
@GoogleCallBack.aspx
接收 google 回傳的 QueryString,驗証回傳資料後,導回原本未驗証的那一頁
{ var returnUrl = this.Request.QueryString["sid"]; var result = OpenAuth.VerifyAuthentication(returnUrl); if (result.IsSuccessful) { FormsAuthentication.SetAuthCookie(result.UserName, false); this.Response.Redirect(FormsAuthentication.GetRedirectUrl(result.UserName, false)); } }
完成後就可以發佈到網路上測試,別傻傻的按F5,不然 google 會找不到你
對了,別忘了設定 web.config
<authentication mode="Forms"></authentication> </system.web>
內容出自:http://www.dotblogs.com.tw/yc421206/archive/2013/12/11/133642.aspx
參考資料:http://studyhost.blogspot.tw/2013/06/aspnet-webform-formsgoogle-oauth.html
若有謬誤,煩請告知,新手發帖請多包涵
Microsoft MVP Award 2010~2017 C# 第四季
Microsoft MVP Award 2018~2022 .NET