Я получаю ошибку rest_cannot_delete при попытке выполнить delete вызов Wordpress API.
Я использую Python2.7 и оболочку Python библиотеки wc-api-python, и код следующий:
from wordpress import API
wpapi = API(
url=url,
consumer_key=key,
consumer_secret=secret,
api="wp-json",
version="wp/v2",
wp_user=user,
wp_pass=password,
#oauth1a_3leg=True,
#creds_store="~/.wc-api-creds.json"
)
response = wpapi.delete("/media/49590?force=true").json()
Я убедился, что учетные данные работают, успешно выполнив другой вызов ( get на этот раз) к другой конечной точке:
response = wpapi.get("/media?page=1&per-page=100&author=2").json()
И это работает правильно.
Вот ошибка, которую я получаю при попытке удаления:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python27\lib\site-packages\wordpress\api.py", line 211, in delete
return self.__request("DELETE", endpoint, None, **kwargs)
File "C:\Python27\lib\site-packages\wordpress\api.py", line 191, in __request
self.request_post_mortem(response)
File "C:\Python27\lib\site-packages\wordpress\api.py", line 168, in request_post_mortem
raise UserWarning(msg)
UserWarning: API call to https://xxx/de-en/wp-json/wp/v2/media/49590?force=true&oauth_consumer_key=xxx&oauth_nonce=xxx&oauth_signature=xxx&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1553864071 returned
CODE: 401
RESPONSE:<html>
<body>
<p>
{"code":"rest_cannot_delete","message":"Sorry, you are not allowed to delete this post.","data":{"status":401}}
</p>
</body>
</html>
HEADERS: {'Content-Length': '111', 'X-Robots-Tag': 'noindex', 'X-Content-Type-Options': 'nosniff', 'Access-Control-Expose-Headers': 'X-WP-Total, X-WP-TotalPages', 'Keep-Alive': 'timeo
ut=20', 'Server': 'nginx', 'Connection': 'keep-alive', 'Link': '<https://xxx/wp-json/>; rel="https://api.w.org/"', 'Allow': 'GET', 'Date': 'Fri, 29 Mar 2
019 12:54:32 GMT', 'WPE-Backend': 'apache', 'Access-Control-Allow-Headers': 'Authorization, Content-Type', 'Content-Type': 'application/json; charset=UTF-8'}
REQ_BODY:None
Because of rest_cannot_delete - Sorry, you are not allowed to delete this post. - {u'status': 401}
Ключ API, сгенерированный для пользователя, от которого я выполняю вызовы, имеет доступ как для чтения, так и для записи.
Я уже пытался использовать устаревшую версию API, но у меня такая же ошибка.
Возможно, это как-то связано с wordpress, имеющим дополнительное ограничение для запросов на удаление с использованием oauth1a_3leg=True
?