Un utente ha chiesto informazioni su WooCommerce di Wordpress

Woo 3.6.1 API REST per plug-in di terze parti

Un utente ha chiesto 👇

Hai davvero deciso che puoi impostare i termini per l’utilizzo dell’API REST invece di WordPress?

Come hai aggiunto tali controlli ai tuoi metodi, che non puoi più usare l’API REST senza ottenere le tue chiavi?

/woocommerce/includes/class-woocommerce.php alla riga 254
funzione pubblica is_rest_api_request

/woocommerce/includes/api/class-wc-rest-authentication.php alla riga 52
funzione di protezione is_request_to_rest_api

Autore del plugin

(@kloon)

1 anno, 11 mesi fa

Ciao Vitaly, non sei sicuro di cosa intendi con noi che dettiamo i termini per l’utilizzo dell’API REST? I metodi a cui ti colleghi servono solo per interagire con l’API WooCommerce, poiché l’API WooCommerce richiede applicazioni di autenticazione, dobbiamo aggiungerla.

Dovresti comunque essere in grado di accedere ai normali punti API WP come al solito senza utilizzare alcuna chiave API WooCommerce, l’ho testato e per me funziona.

Lanciatore di thread

(@axeleus)

1 anno, 11 mesi fa

funziona solo per il plugin WooCommerce e taglia altre applicazioni di terze parti. Lo confronti con la versione precedente del tuo plugin.

Al momento, quando invio una richiesta alla mia API REST, ricevo questo {“code”: “woocommerce_rest_authentication_error”, “message”: “Consumer key is invalid.”, “Data”: {“status”: 401}}

questo è un vecchio gestore:

protected function is_request_to_rest_api() {
	if ( empty( $_SERVER['REQUEST_URI'] ) ) {
		return false;
	}

	$rest_prefix = trailingslashit( rest_get_url_prefix() );

	// Check if our endpoint.
	$woocommerce = ( false !== strpos( $_SERVER['REQUEST_URI'], $rest_prefix . 'wc/' ) ); // @codingStandardsIgnoreLine

	// Allow third party plugins use our authentication methods.
	$third_party = ( false !== strpos( $_SERVER['REQUEST_URI'], $rest_prefix . 'wc-' ) ); // @codingStandardsIgnoreLine

	return apply_filters( 'woocommerce_rest_is_request_to_rest_api', $woocommerce || $third_party );
}

questa è una nuova versione:

public function is_rest_api_request() {
	if ( empty( $_SERVER['REQUEST_URI'] ) ) {
		return false;
	}

	$rest_prefix         = trailingslashit( rest_get_url_prefix() );
	$is_rest_api_request = ( false !== strpos( $_SERVER['REQUEST_URI'], $rest_prefix ) ); // phpcs:disable WordPress.Security.ValidatedSanitizedInput.MissingUnslash, WordPress.Security.ValidatedSanitizedInput.InputNotSanitized

	return apply_filters( 'woocommerce_is_rest_api_request', $is_rest_api_request );
}

Vale a dire, controlli $ rest_prefix uguale a wp-json e tutte le richieste vanno dai plug-in di terze parti alle ceneri. Forse non capisco qualcosa, ma pensi davvero di potertelo permettere?

Lanciatore di thread

(@axeleus)

1 anno, 11 mesi fa

Quando chiamo https://example.com/wp-json/myendpoint/ Ho questa risposta {"code":"woocommerce_rest_authentication_error","message":"Consumer key is invalid.","data":{"status":401}}

Autore del plugin

(@mikejolley)

1 anno, 11 mesi fa

La mia comprensione è che i metodi di autenticazione sono difficili. Senza autenticazione posso accedere agli endpoint dell’API REST come file /wp-json/wp/v2/posts/1 nessun problema e ho testato il plug-in JSON di base che funziona anche.

Authentication

Quale metodo di autore stai utilizzando per i tuoi endpoint personalizzati? Sono disponibili ovunque per provare?

Lanciatore di thread

(@axeleus)

1 anno, 11 mesi fa

Ho i miei metodi di scambio dei dati, diversi da quelli standard.

Ad essere onesto, speravo di trascorrere la giornata con un vantaggio, creare qualcosa di nuovo e portare a termine il tuo lavoro.

Forse qualcuno torna utile. Hook disabilita il controllo dell’API REST di WooCommerce

function _for_own_rest( $result ) {

    $rest_prefix = trailingslashit( rest_get_url_prefix() );
    if ( false !== strpos( $_SERVER['REQUEST_URI'], $rest_prefix . 'own/v1/' ) ){
        add_filter('woocommerce_rest_is_request_to_rest_api', function ( $param ) {
            return false;
        }, 100, 1);
    }
    return $result;
}
add_action( 'determine_current_user', '_for_own_rest', 10, 1 );

Autore del plugin

(@mikejolley)

1 anno, 11 mesi fa

Non so cosa stai facendo ma non è in linea con come dovrebbe funzionare l’API rest di WordPress.

È necessario fornire il proprio metodo di autenticazione o potrebbe non essere necessaria l’autenticazione durante la verifica degli endpoint. Se l’autenticazione api rest di WC interrompe il tuo endpoint, presumo che verrà installato https://github.com/WP-API/Basic-Auth lo farebbe anche tu?

Questa risposta è stata modificata 1 anno, 11 mesi fa da. Lanciatore di thread

(@axeleus)

1 anno, 11 mesi fa

Mi vuoi convincere di qualcosa? Con le buffonate, per me va tutto bene, è stato fino a quando non hai rilasciato un aggiornamento. So che tutto funziona per me sulla precedente versione “stabile” di Woo. E non vuoi controllarlo correttamente o non vuoi ammettere che qualcosa è andato storto.

Questo è quello che.

Autore del plugin

(@mikejolley)

1 anno, 11 mesi fa

Vitaly, non voglio capire il problema, quindi possiamo lavorare su una patch se necessario, ma invece di aiutare vedo un atteggiamento dearcadh

– È https://github.com/WP-API/Basic-Auth rompere il tuo autore si o no?
– Come appare il tuo autore personalizzato, ovvero come lo gestisci. Un autore di base come WooCommerce? Qualcos’altro? Non autorizzato?

Possiamo restringere l’ambito dell’autore solo a wc / endpoint, ma senza capire il problema o cosa non funziona non so perché sia ​​necessario.

Grazie

(@ishtiyaqhu)

1 anno, 11 mesi fa

Dopo l’ultimo aggiornamento di WooCommerece, anche la mia API WP non funziona. Prima dell’aggiornamento tutto funzionava correttamente. Si prega di controllare, quando si trova il seguente errore:

{
“Codice”: “woocommerce_rest_cannot_view”,
“Message”: “Spiacenti, non puoi visualizzare questa risorsa.”
“Dettagli”: {
“Stato”: 401
}
}

Autore del plugin

(@mikejolley)

1 anno, 11 mesi fa

Forse puoi controllare https://github.com/woocommerce/woocommerce/pull/23372 – se approvato. Anche in questo caso, è difficile applicare patch / proteggere le modifiche senza rapporti adeguati. Non è chiaro il motivo per cui ciò è in conflitto con la tua API.

(@jmzolezzi)

1 anno, 11 mesi fa

Ho anche problemi con l’API WooCommerce dopo i recenti aggiornamenti.

Se riesci a eliminarlo, i dettagli sono compresi.

(@mtmd)

1 anno, 11 mesi fa

Allo stesso modo qui, ho due collegamenti non riusciti.
Sto cercando di tornare a rimetterli.

Altrimenti apprezzi le funzionalità dei ragazzi aggiornati!

Was this helpful?

0 / 0

Lascia un commento 0

Your email address will not be published. Required fields are marked *