public static async Task <bool> IDP4Login() { try { var authUrl = new Uri($"https://pilotdeli-mvc.azurewebsites.net/mobileauth/login"); var callbackUrl = new Uri(CALLBACK_URL); var result = await WebAuthenticator.AuthenticateAsync(authUrl, callbackUrl); appToken.AccessToken.Token = result?.AccessToken; appToken.RefreshToken.Token = result?.RefreshToken; appToken.AccessToken.ExpiredDate = getTokenExpiredDate(appToken.AccessToken.Token); var needLogout = await NeedLoginAgain(); if (needLogout) { await App.Current.MainPage.DisplayAlert("แจ้งเตือน", $"Session หมด อายุ", "ปิด"); await Logout(); return(false); } var RefId = result.Properties.ContainsKey("ref_id") ? result.Properties["ref_id"] : ""; if (!string.IsNullOrWhiteSpace(RefId)) { await BikerService.SetBikerInfo(RefId); } else { await App.Current.MainPage.DisplayAlert("แจ้งเตือน", $"คุณยังไม่ได้ยืนยัน Consent", "ปิด"); await Logout(); return(false); } //TODO: SetClientBearer when server use real IDP //HttpClientService.SetClientBearer(appToken.AccessToken.Token); return(true); } catch (Exception ex) { return(false); } }