AspNet Identity 表示:我也不過是被 One ASP.NET 玩弄於股掌之間的一個犧牲者
老疆表示:程式設計師用一些想到的點子來做一些無聊事情,這樣瞭不瞭
第一次聽到 AspNet Identity 是 老疆 的影片
http://www.youtube.com/watch?v=G2JC4KWTqXM&list=PLSvKFCIcFiosRfhmjcSCozircig3dRRrR&index=1
(11:15開始)
老疆的演講都很有梗
而且梗都是模仿不來的
別人說都不好笑 但是聽他講卻又有種獨特的幽默
我想這是一種 Aura
這次來玩 Social Login
為啥要 Social Login
也沒啥為什麼 因為流行
客戶說 OO 的網站可以用 XX 登入 我們的網站也要以
但是 social website 滿天下
每個都自成一套 API
而且 document 絕不會有中文
所以程式設計師總是永無止境的在熟悉 API 的用法
等到好像有點懂的時候 可能 API 又改版了 ._.
Micro$oft 發現了這個現象
所以就把它包裝起來 放到 AspNet Identity 裡面
好讓它更顯強大
首先是出場率最高的 Facebook 登入
在以往要做到這項功能
可能要先征服這頁
https://developers.facebook.com/docs/facebook-login/login-flow-for-web/
有個名詞兒叫 OAuth
OAuth(開放授權)是一個開放標準,允許用戶讓第三方應用訪問該用戶在某一網站上存儲的私密的資源(如照片,視頻,聯繫人列表),而無需將用戶名和密碼提供給第三方應用。
Facebook 登入 就是一種 OAuth
那不重要 因為大多數的人其實都不 Care 名詞解釋這回事
馬上來玩玩 就對了
但是玩之前必須要先申請 Facebook 應用程式
取得應用程式 ID (appId) 跟 應用程式密鑰 (appSecret)
申請過程沒啥好講的
但是如果我們在古早就 自行挑戰過 Facebook 登入的話...
WTF 介面改了 長得不一樣了
要先到 設定 這頁 點選 +新增平台
然後選網站
網站 URL 填好之後 切記! 要按 儲存
最近發現一個坑 那就是 只要網站沒有設定網域 (例如 localhost 或者 IP 的形式)
Facebook 只會讓應用程式擁有者 的帳號登入
用其他的帳號 一律看到這個 不明所以的錯誤
如果用 手工 javascript 的 FB.login() 的話更慘 會直接空白卡死
2014/02/26 補充:
後來發現原來是沙盒在作亂
http://stackoverflow.com/questions/20706322/how-to-disable-sandbox-mode-for-app-in-new-facebook-developer
在這頁可以切換...
MotherF___er!! 不能按是哪招??
後來經高人指點 才知道原來要填 E-mail 之後才能按 (X 鬼知道唷) 見圖2
再來 回到 VS 2013 建立一個 MVC 專案
他預設很好心的就準備好一堆範例程式 讓我們熟悉 他新攪和進來的東東
然後打開 \App_Start\Startup.Auth.cs
我們會發現只要取消註解 填上 appId 跟 appSecret 就結束了
此時登入頁面 就會多了 Facebook 登入的按鈕
如果點了 就GG了 那是因為我們使用 網址使用 localhost 然後又用了 該死的 IE
否則 點了會跳這個 不管問什麼都一定會按確定 的頁面
這時會回來網站問你...唉唷欸欸耶耶名字可以自己取耶呵呵呵呵呵呵
如果覺得有下底線的 username 很潮 我們會毫無意外的 獲得紅字
因為預設只接受英數字組合 中文也不行
修改 AccountController 的建構子 設定 AllowOnlyAlphanumericUserNames = false 就能解決
但是此時就沒任何規則 要加驗證要另外搞
public AccountController(UserManager<ApplicationUser> userManager) { UserManager = userManager; UserManager.UserValidator = new UserValidator<ApplicationUser>(UserManager) { AllowOnlyAlphanumericUserNames = false }; }
然後就能快樂的登入了 可喜可賀
什麼? 這麼快? 快得令人覺得有些空虛 -.-
因為大部分都被黑箱了呀
好奇怎麼實作的話 就 reflector 催落起吧
沒有留言:
張貼留言