private PendingIntent CreatePostAuthorizationIntent(Context context, AuthorizationRequest request, AuthorizationServiceDiscovery discoveryDoc, AuthState authState) { var intent = new Intent(context, typeof(MainActivity)); intent.PutExtra(Constants.AuthStateKey, authState.JsonSerializeString()); if (discoveryDoc != null) { intent.PutExtra(Constants.AuthServiceDiscoveryKey, discoveryDoc.DocJson.ToString()); } return(PendingIntent.GetActivity(context, request.GetHashCode(), intent, 0)); }
private void FetchUserInfo() { if (authState.AuthorizationServiceConfiguration == null) { Console.WriteLine("Cannot make userInfo request without service configuration"); } authState.PerformActionWithFreshTokens(authService, async(accessToken, idToken, ex) => { if (ex != null) { Console.WriteLine("Token refresh failed when fetching user info"); return; } AuthorizationServiceDiscovery discoveryDoc = GetDiscoveryDocFromIntent(Intent); if (discoveryDoc == null) { throw new InvalidOperationException("no available discovery doc"); } try { using (var client = new HttpClient()) { client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken); var response = await client.GetStringAsync(discoveryDoc.UserinfoEndpoint.ToString()); new Handler(MainLooper).Post(() => { userInfoJson = new JSONObject(response); RefreshUi(); }); } } catch (HttpRequestException ioEx) { Console.WriteLine("Network error when querying userinfo endpoint:" + ioEx); } catch (JSONException jsonEx) { Console.WriteLine("Failed to parse userinfo response: " + jsonEx); } }); }
private PendingIntent CreatePostAuthorizationIntent(Context context, AuthorizationRequest request, AuthorizationServiceDiscovery discoveryDoc) { Intent intent = new Intent(context, typeof(RedirectActivity)); intent.PutExtra(Constants.EXTRA_AUTH_STATE, AuthState.JsonSerializeString()); if (discoveryDoc != null) { intent.PutExtra("authServiceDiscovery", discoveryDoc.DocJson.ToString()); } return(PendingIntent.GetActivity(context, request.GetHashCode(), intent, 0)); }
public static PendingIntent CreatePostAuthorizationIntent(Context context, AuthorizationRequest request, AuthorizationServiceDiscovery discoveryDoc, AuthState authState) { var intent = new Intent(context, typeof(TokenActivity)); intent.PutExtra(EXTRA_AUTH_STATE, authState.JsonSerializeString()); if (discoveryDoc != null) { intent.PutExtra(EXTRA_AUTH_SERVICE_DISCOVERY, discoveryDoc.DocJson.ToString()); } return(PendingIntent.GetActivity(context, request.GetHashCode(), intent, 0)); }
private void RefreshUi() { var refreshTokenInfoView = FindViewById <TextView>(Resource.Id.refresh_token_info); var accessTokenInfoView = FindViewById <TextView>(Resource.Id.access_token_info); var idTokenInfoView = FindViewById <TextView>(Resource.Id.id_token_info); var refreshTokenButton = FindViewById <Button>(Resource.Id.refresh_token); if (authState.IsAuthorized) { refreshTokenInfoView.SetText(authState.RefreshToken == null ? Resource.String.no_refresh_token_returned : Resource.String.refresh_token_returned); idTokenInfoView.SetText(authState.IdToken == null ? Resource.String.no_id_token_returned : Resource.String.id_token_returned); if (authState.AccessToken == null) { accessTokenInfoView.SetText(Resource.String.no_access_token_returned); } else { var expiresAt = authState.AccessTokenExpirationTime; string expiryStr; if (expiresAt == null) { expiryStr = Resources.GetString(Resource.String.unknown_expiry); } else { expiryStr = DateFormat.GetDateTimeInstance(DateFormat.Full, DateFormat.Full).Format(new Date(expiresAt.LongValue())); } var tokenInfo = string.Format(Resources.GetString(Resource.String.access_token_expires_at), expiryStr); accessTokenInfoView.Text = tokenInfo; } } refreshTokenButton.Visibility = authState.RefreshToken != null ? ViewStates.Visible : ViewStates.Gone; var viewProfileButton = FindViewById <Button>(Resource.Id.view_profile); AuthorizationServiceDiscovery discoveryDoc = GetDiscoveryDocFromIntent(Intent); if (!authState.IsAuthorized || discoveryDoc == null || discoveryDoc.UserinfoEndpoint == null) { viewProfileButton.Visibility = ViewStates.Gone; } else { viewProfileButton.Visibility = ViewStates.Visible; } var userInfoCard = FindViewById(Resource.Id.userinfo_card); if (userInfoJson == null) { userInfoCard.Visibility = ViewStates.Invisible; } else { try { string name = "???"; if (userInfoJson.Has("name")) { name = userInfoJson.GetString("name"); } FindViewById <TextView>(Resource.Id.userinfo_name).Text = name; FindViewById <TextView>(Resource.Id.userinfo_json).Text = userInfoJson.ToString(2); userInfoCard.Visibility = ViewStates.Visible; } catch (JSONException ex) { Console.WriteLine("Failed to read userinfo JSON: " + ex); } } }