Gửi yêu cầu DELETE tới API REST của Blogger (v3.0), tôi đang cố gắng xóa bài đăng bằng cách sử dụng delete method. Đối với điều này tôi sử dụng đoạn mã sau:Cố gắng xóa bài đăng bằng cách sử dụng API Blogger trả về lỗi "không tìm thấy"
api_uri = 'https://www.googleapis.com/blogger/v3/blogs/%s/posts/%s' % (blogId, postId)
result = urlfetch.fetch(url=api_uri,
method=urlfetch.DELETE,
headers={'Authorization' : oauth_token})
self.response.out.write(result.content)
Nhưng trở về server:
{
"error": {
"errors": [
{
"domain": "global",
"reason": "notFound",
"message": "Not Found"
}
],
"code": 404,
"message": "Not Found"
}
}
Tuy nhiên, tôi có thể lấy thông tin về bài viết này, bằng cách sử dụng đoạn mã sau:
api_uri = 'https://www.googleapis.com/blogger/v3/blogs/%s/posts/%s' % (blogId, postId)
result = urlfetch.fetch(url=api_uri,
headers={'Authorization' : oauth_token})
self.response.out.write(result.content)
Tại thời điểm này, tôi không thể hiểu những gì tôi đang làm sai - yêu cầu được ủy quyền, các blogId
và postId
là chính xác - nhưng dù sao, máy chủ trả về "không tìm thấy "lỗi.
Nếu bạn biết cách giải quyết vấn đề này hoặc bạn có thể đưa ra lời khuyên hữu ích - hãy giúp tôi.
Cảm ơn bạn đã dành thời gian và cân nhắc vấn đề này.
UPD 1: Nếu tôi gửi yêu cầu đến các URL sau:
# https://www.googleapis.com/blogger/v3/users/{userID}
# https://www.googleapis.com/blogger/v3/users/self
Các máy chủ cũng trả về:
{
"error": {
"errors": [
{
"domain": "global",
"reason": "notFound",
"message": "Not Found"
}
],
"code": 404,
"message": "Not Found"
}
}
UPD 2: Tôi quên nói tôi đang sử dụng OAuth 2.0 for Server to Server Applications. Vì vậy, để có sự cho phép thẻ, tôi gửi yêu cầu tới https://accounts.google.com/o/oauth2/token
sử dụng JWT yêu cầu bồi thường Set sau:
jwt_claim_set = {
'iss' : '{id}@developer.gserviceaccount.com',
'scope' : 'https://www.googleapis.com/auth/blogger',
'aud' : 'https://accounts.google.com/o/oauth2/token',
'exp' : expire,
'iat' : timestamp
}
Lợi nhuận server:
{
"access_token" : "1/8xbJqaOZXSUZbHLl5EOtu1pxz3fmmetKx9W8CV4t79M",
"token_type" : "Bearer",
"expires_in" : 3600
}
Và xác định biến oauth_token
, sử dụng:
data = simplejson.loads(result.content)
oauth_token = data['token_type'] + ' ' + data['access_token']
Xem xét bạn có thể đã kiểm tra ID và mã thông báo xác thực, tôi khuyên bạn nên kiểm tra truy vấn của mình theo cách thủ công với [cURL] (http://en.wikipedia.org/wiki/CURL). Tùy thuộc vào kết quả, bạn sẽ biết nếu vấn đề là làm thế nào bạn xây dựng bạn url, hoặc cái gì khác ... –
@AlexisHuet, Cảm ơn bạn đã gợi ý, nhưng dù sao, tôi chắc chắn rằng vấn đề không phải là trong URL. Chắc chắn, vấn đề là "cái gì khác". – B7ackAnge7z
Bạn đã thử nó với 'yêu cầu', để xem vấn đề có nằm trong module bạn sử dụng không? –