我有一个非常奇怪的问题,我似乎无法解决:
我已经在我的wordpress 站点上设置了REST API和Oauth1 服务器。
我以前可以使用python requests 库连接到服务器并上传新帖子,但是,我在 2 个月后重新修改了代码,现在它不起作用。错误响应说:b'{"code":"json_oauth1_signature_mismatch","message":"OAuth signature does not match","data":{"status":401}}'
我可以连接到 Oauth1 服务器并通过Postman HTTP 请求构建器将新帖子上传到我的站点,因此该站点似乎不是问题。
该代码也不是问题,因为自从它上次运行良好以来,我在过去 2 个月内没有更改它。我还在本地托管的 wordpress 安装上对其进行了测试,它工作正常。
代码的精简版本如下所示:
import requests
from requests_oauthlib import OAuth1
OAuth_credentials = {
'client_key': 'X',
'client_secret': 'X',
'resource_owner_key': 'X',
'resource_owner_secret': 'X'
}
auth = OAuth1(*OAuth_credentials.values())
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
data = {
'title': 'title'
}
response = requests.request(
'POST',
'https://www.X.com/wp-json/WP/v2/posts/',
headers=headers,
auth=auth,
json = data
)
对我来说,Postman 正在工作,但 python 请求库不工作,这对我来说似乎很奇怪。我只能认为我必须在我的网站上更改了某些内容,例如 htaccess,但我对那条查询没有运气。
我的 .htaccess 看起来像这样:
# BEGIN HTTPS Redirection Plugin
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule .* - [e=HTTP_AUTHORIZATION:%1]
RewriteBase /
RewriteRule ^index\.php$ - [E=X-HTTP_AUTHORIZATION:%{HTTP:Authorization},QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [E=X-HTTP_AUTHORIZATION:%{HTTP:Authorization},QSA,L]
</IfModule>
# END HTTPS Redirection Plugin
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
谁能提出问题可能是什么?