Wordpress 无法将VendHQ(POS)连接到WooCommerce(WP)
我已经花了很多天试图弄明白这一点,这似乎是一个共同的问题。我读过很多关于同一问题的帖子。我已经尝试了所有我能找到的解决方案,但我仍然得到同样的结果——无法成功地将我客户的VendHQ(POS)连接到我的WoodCommerce商店(WordPress 5.2.4,PHP 7.2)。我已联系VendHQ寻求帮助,但他们的解决方案与其他解决方案一样,没有起作用 我试过什么:Wordpress 无法将VendHQ(POS)连接到WooCommerce(WP),wordpress,apache,woocommerce,woocommerce-rest-api,Wordpress,Apache,Woocommerce,Woocommerce Rest Api,我已经花了很多天试图弄明白这一点,这似乎是一个共同的问题。我读过很多关于同一问题的帖子。我已经尝试了所有我能找到的解决方案,但我仍然得到同样的结果——无法成功地将我客户的VendHQ(POS)连接到我的WoodCommerce商店(WordPress 5.2.4,PHP 7.2)。我已联系VendHQ寻求帮助,但他们的解决方案与其他解决方案一样,没有起作用 我试过什么: 按照VendHQ的说明创建我的WooCommerce REST API密钥,并将它们放入VendHQ连接设置中。这导致初始错误
"We are unable to connect your WooCommerce store. Your website does not allow connections with Authorization Headers in the Vend API."
我以为最后一次改变会解决这个问题。有人看到授权头错误的问题吗
我在Chrome浏览器中测试了WC API键:
https://my_client_shop.com/wp-json/wc/v2/system_status?consumer_key=ck_389f08cda9f8a802b366b1de8cb562cba95e462c&consumer_secret=cs_65fcd907905f9d8c64b38a7dd60de4f034526ff2
它显示了json文件的详细信息。如果没有这些键,我会再次出现“无法列出401”错误。因此,我假设从这一点来看,密钥实际上是有效的
看来我们离得越来越近了,但我没有主意了
最后,我的客户的商店网站是在一个多站点上,如果这有区别的话
所以我希望其他人经历了这一切,能够真正找到一个有效的解决方案,并与大家分享:)或者指出我可能遗漏了什么或有什么错误。非常感谢您提出的所有建议。一位与我合作的开发人员最终使用以下代码操作WooCommerce文件:
private function perform_basic_authentication() {
$this->auth_method = 'basic_auth';
$consumer_key = 'ck_PUT_YOUR_WC_REST_API_KEY';
$consumer_secret = 'cs_PUT_YOUR_WC_REST_API_KEY';
// If the $_GET parameters are present, use those first.
if ( ! empty( $_GET['consumer_key'] ) && ! empty( $_GET['consumer_secret'] ) ) { // WPCS: CSRF ok.
$consumer_key = $_GET['consumer_key']; // WPCS: CSRF ok, sanitization ok.
$consumer_secret = $_GET['consumer_secret']; // WPCS: CSRF ok, sanitization ok.
}
// If the above is not present, we will do full basic auth.
if ( ! $consumer_key && ! empty( $_SERVER['PHP_AUTH_USER'] ) && ! empty( $_SERVER['PHP_AUTH_PW'] ) ) {
$consumer_key = $_SERVER['PHP_AUTH_USER']; // WPCS: CSRF ok, sanitization ok.
$consumer_secret = $_SERVER['PHP_AUTH_PW']; // WPCS: CSRF ok, sanitization ok.
}
// Stop if don't have any key.
if ( ! $consumer_key || ! $consumer_secret ) {
return false;
}
// Get user data.
$this->user = $this->get_user_data_by_consumer_key( $consumer_key );
if ( empty( $this->user ) ) {
return false;
}
// Validate user secret.
if ( ! hash_equals( $this->user->consumer_secret, $consumer_secret ) ) { // @codingStandardsIgnoreLine
$this->set_error( new WP_Error( 'woocommerce_rest_authentication_error', __( 'Consumer secret is invalid.', 'woocommerce' ), array( 'status' => 401 ) ) );
return false;
}
return $this->user->user_id;
}
这确实管用,但需要大量挖掘。不幸的是,它位于WC核心文件中,因此更新WC会将它吹走。我正在等待开发人员找到将其移动到子主题的方法。我使用的一个开发人员最终使用以下代码操作WooCommerce文件:
private function perform_basic_authentication() {
$this->auth_method = 'basic_auth';
$consumer_key = 'ck_PUT_YOUR_WC_REST_API_KEY';
$consumer_secret = 'cs_PUT_YOUR_WC_REST_API_KEY';
// If the $_GET parameters are present, use those first.
if ( ! empty( $_GET['consumer_key'] ) && ! empty( $_GET['consumer_secret'] ) ) { // WPCS: CSRF ok.
$consumer_key = $_GET['consumer_key']; // WPCS: CSRF ok, sanitization ok.
$consumer_secret = $_GET['consumer_secret']; // WPCS: CSRF ok, sanitization ok.
}
// If the above is not present, we will do full basic auth.
if ( ! $consumer_key && ! empty( $_SERVER['PHP_AUTH_USER'] ) && ! empty( $_SERVER['PHP_AUTH_PW'] ) ) {
$consumer_key = $_SERVER['PHP_AUTH_USER']; // WPCS: CSRF ok, sanitization ok.
$consumer_secret = $_SERVER['PHP_AUTH_PW']; // WPCS: CSRF ok, sanitization ok.
}
// Stop if don't have any key.
if ( ! $consumer_key || ! $consumer_secret ) {
return false;
}
// Get user data.
$this->user = $this->get_user_data_by_consumer_key( $consumer_key );
if ( empty( $this->user ) ) {
return false;
}
// Validate user secret.
if ( ! hash_equals( $this->user->consumer_secret, $consumer_secret ) ) { // @codingStandardsIgnoreLine
$this->set_error( new WP_Error( 'woocommerce_rest_authentication_error', __( 'Consumer secret is invalid.', 'woocommerce' ), array( 'status' => 401 ) ) );
return false;
}
return $this->user->user_id;
}
这确实管用,但需要大量挖掘。不幸的是,它位于WC核心文件中,因此更新WC会将它吹走。我正在等待开发人员找到一种方法将其移动到儿童主题。这对我来说很有效
我将其添加到.htaccess文件中。此文件可以通过FTP访问Wordpress服务器
CGIPassAuth on
我从这里得到了这个:这对我很有用
我将其添加到.htaccess文件中。此文件可以通过FTP访问Wordpress服务器
CGIPassAuth on
我从这里得到了这个结论:我也有同样的问题,在这个问题上似乎没有太多东西。不过,我可以使用您的htaccess编辑使其正常工作(谢谢!)。我唯一改变的是删除了这一行:标题添加严格的传输安全性“max age=300”。。。我很高兴它对你有用。我也有同样的问题,而且在这个问题上似乎没有太多的东西。不过,我可以使用您的htaccess编辑使其正常工作(谢谢!)。我唯一改变的是删除了这一行:标题添加严格的传输安全性“max age=300”。。。我很高兴它对您起到了作用。虽然这样做有效,但我强烈建议您不要这样做,因为它本质上是为访问Rest API的任何人禁用身份验证。虽然这样做有效,但我强烈建议您不要这样做,因为它本质上是为访问Rest API的任何人禁用身份验证。
CGIPassAuth on