code: protected Optional<UserProfile> retrieveUserProfileFromToken(final WebContext context, final T accessToken) {
          final OAuthProfileDefinition<U, T, O> profileDefinition = configuration.getProfileDefinition();
          final String profileUrl = profileDefinition.getProfileUrl(accessToken, configuration);
          final S service = this.configuration.buildService(context, client, null);
          final String body = sendRequestForData(service, accessToken, profileUrl, profileDefinition.getProfileVerb());
          logger.info("UserProfile: " + body);
          if (body == null) {
              throw new HttpCommunicationException("No data found for accessToken: " + accessToken);
          }
          final U profile = (U) configuration.getProfileDefinition().extractUserProfile(body);
          addAccessTokenToProfile(profile, accessToken);
          return Optional.of(profile);
      }
docs: Retrieve the user profile from the access token.
  
  @param context the web context
  @param accessToken the access token
  @return the user profile