離鐵人賽到期還有7天, 一開始地圖開太大, 所以不知寫不寫得完?, 所以接下來就先專攻IOS, 若有剩餘天數, 再補齊Android與Windows, 經過前面幾篇的測試, Azure的相關設定均已完成, 該Xamarin.Forms上場, 來畫下完美句點了.
首先新增一個Xamarin.Forms Portable的專案如下
一開始要製作的是用Microsoft帳號登入的功能, 所以必須安裝Microsoft.Identity.Client這個套件, 安裝指令如下
Install-Package Microsoft.Identity.Client –Pre
結果沒想到報錯了
搜尋到解決方式, 可以參照這一篇
https://github.com/microsoftgraph/xamarin-csharp-connect-sample/wiki/Set-up-a-Xamarin-Forms-project-to-use-the-MSAL-.NET-SDK
看了以後發現一個噩耗, 就是Microsoft.Identity.Client不支援Windows 8.1 Phone, 這個果然是孤兒啊, 加上要專攻IOS, 先把其他專案先移除只留下Portable跟IOS專案, 並且在NuGet裡移除所有安裝套件如下所示
接著下Portable專案屬性Library頁籤, 點選Change, 將Windows Phone的勾選取消如下紅框所示
接著在Solution的 NuGet裡搜尋Microsoft.Identity.Client, 安裝在Portable跟IOS專案如下所示, 完成之後記得再把剛移除的Xamarin.Forms套件裝回去
在Portable專案新增一個config.cs用來放所有設定值, 讓其他專案也能取用, 如下
接著新增一個LoginPage用來做登入之用, 其xaml設定如下
然後打開App.xaml.cs將程式碼修改如下
打開LoginPage.xaml.cs敲入底下程式碼
打開MainPage.xaml, 新增一個Lable用來顯示登入後的User Name
打開MainPage.xaml.cs, 敲入底下程式碼
打開IOS專案下的AppDelegate.cs, 將程式碼修改如下
接著就可以把模擬器跑起來
按下Login後, 看到了熟悉的畫面, 有沒有很感動?, 之前測試那麼多, 就是為了它
選擇Microsoft帳號, 出現帳號輸入畫面如下
登入成功後, MainPage的Label會顯示User Name如下
本文參考底下兩篇
https://azure.microsoft.com/zh-tw/resources/samples/active-directory-b2c-xamarin-native/
https://developer.xamarin.com/guides/xamarin-forms/web-services/authentication/azure-ad-b2c/
後記: 其實本文留下一個殘壘, 就是取不到User Email, 找了一下說是Microsoft Graph API可以做到, 這個只好等有時間再試了