Yoast\WP\SEO\Config

Wincher_PKCE_Provider::getAuthorizationParameters()protectedYoast 1.0

Returns authorization parameters based on provided options.

Метод класса: Wincher_PKCE_Provider{}

Хуков нет.

Возвращает

Массив. The authorization parameters

Использование

// protected - в коде основоного (родительского) или дочернего класса
$result = $this->getAuthorizationParameters( $options );
$options(массив) (обязательный)
The options to use in the authorization parameters.

Код Wincher_PKCE_Provider::getAuthorizationParameters() Yoast 19.11

protected function getAuthorizationParameters( array $options ) {
	if ( empty( $options['state'] ) ) {
		$options['state'] = $this->getRandomState();
	}

	if ( empty( $options['scope'] ) ) {
		$options['scope'] = $this->getDefaultScopes();
	}

	$options += [
		'response_type'   => 'code',
	];

	if ( \is_array( $options['scope'] ) ) {
		$separator        = $this->getScopeSeparator();
		$options['scope'] = \implode( $separator, $options['scope'] );
	}

	// Store the state as it may need to be accessed later on.
	$this->state = $options['state'];

	$pkce_method = $this->getPkceMethod();
	if ( ! empty( $pkce_method ) ) {
		$this->pkceCode = $this->getRandomPkceCode();
		if ( $pkce_method === 'S256' ) {
			$options['code_challenge'] = \trim(
				\strtr(
					// phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.obfuscation_base64_encode
					\base64_encode( \hash( 'sha256', $this->pkceCode, true ) ),
					'+/',
					'-_'
				),
				'='
			);
		}
		elseif ( $pkce_method === 'plain' ) {
			$options['code_challenge'] = $this->pkceCode;
		}
		else {
			throw new InvalidArgumentException( 'Unknown PKCE method "' . $pkce_method . '".' );
		}
		$options['code_challenge_method'] = $pkce_method;
	}

	// Business code layer might set a different redirect_uri parameter.
	// Depending on the context, leave it as-is.
	if ( ! isset( $options['redirect_uri'] ) ) {
		$options['redirect_uri'] = $this->redirectUri;
	}

	$options['client_id'] = $this->clientId;

	return $options;
}