Wordpress REST API,Oauth1和python请求无效

时间:2018-02-24 15:54:04

标签: python-3.x http python-requests wordpress-rest-api oauth-1.0a

我有一个非常奇怪的问题,我似乎无法解决:

我在 wordpress网站上设置了 REST API Oauth1服务器

我以前能够使用 python请求库连接到服务器并上传新帖子,但是,我在2个月后重新审视了代码,现在它无效。错误回复显示:b'{"code":"json_oauth1_signature_mismatch","message":"OAuth signature does not match","data":{"status":401}}'

我可以通过 Postman HTTP请求构建器连接到Oauth1服务器并将新帖子上传到我的网站,因此该网站似乎不是问题所在。

代码也不是问题,因为我在上一次运作良好的过去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

任何人都可以提出问题所在吗?

1 个答案:

答案 0 :(得分:0)

我现在已经解决了这个问题。我发现由于某种原因,wordpress并不喜欢http请求中的用户代理请求。我改变它,现在它可以工作。