code: @Override
  	public synchronized AuthInfo auth() throws AuthenticationException {
  		GameProfile selectedProfile = session().getSelectedProfile();
  		if (selectedProfile == null) {
  			throw new AuthenticationException("no profile is available");
  		}
  
  		Map<String, String> properties = authResult.getProperties();
  		if (properties == null) {
  			properties = Collections.emptyMap();
  		}
  
  		return new AuthInfo(selectedProfile.getName(), authResult.getAccessToken(), selectedProfile.getUUID(), properties, authResult.getUserType().getName());
  	}
docs: Tries to get an available session, and export it as a {@link AuthInfo}.
  If no profile is available, an {@link AuthenticationException} will be
  thrown.
  <p>
  尝试获得一个有效的 session ，并以 {@link AuthInfo} 的形式返回。 假如没有角色可以选择，则会抛出一个
  {@link AuthenticationException} 。
  <p>
  {@inheritDoc}
  
  @see #session()