Beispiel #1
0
        private async void NameLoginWebView_NavigationStarting(WebView sender, WebViewNavigationStartingEventArgs args)
        {
            var uri = args.Uri;

            if (uri.ToString().StartsWith(this._oidcOptions.RedirectUri))
            {
                var code         = OidcOptions.GetCode(uri.Query);
                var httpClient   = new HttpClient();
                var tokenParams  = new FormUrlEncodedContent(this._oidcOptions.BuildTokenParams(code));
                var tokenReponse = await httpClient.PostAsync(this._oidcOptions.TokenEndpoint, tokenParams);

                var jsonText = await tokenReponse.Content.ReadAsStringAsync();

                //todo:http://openid.net/specs/openid-connect-core-1_0.html#TokenResponseValidation
                var file = await ApplicationData.Current.LocalFolder.CreateFileAsync("user-token.json", CreationCollisionOption.ReplaceExisting);

                using (var fileStream = await file.OpenStreamForWriteAsync())
                {
                    var jsonBytes = Encoding.UTF8.GetBytes(jsonText);
                    fileStream.Write(jsonBytes, 0, jsonBytes.Length);
                }
                if (this.Frame.CanGoBack)
                {
                    this.Frame.GoBack();
                }
            }
        }