Blogger REST API (v3.0) に DELETE リクエストを送信し、 delete メソッドを使用して投稿を削除しようとしています。このために、次のコードを使用します。
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)
しかし、サーバーは次を返します。
{
"error": {
"errors": [
{
"domain": "global",
"reason": "notFound",
"message": "Not Found"
}
],
"code": 404,
"message": "Not Found"
}
}
ただし、次のコードを使用して、この投稿に関する情報を取得できます。
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)
現時点では、何が間違っているのか理解できません — リクエストは承認されており、blogId
とpostId
は正しい — とにかく、サーバーは「見つかりません」というエラーを返します。
この問題を解決する方法を知っている場合、または役立つアドバイスを提供できる場合は、助けてください。
この度はご検討いただきありがとうございました。
UPD 1:次の URL にリクエストを送信した場合:
# https://www.googleapis.com/blogger/v3/users/{userID}
# https://www.googleapis.com/blogger/v3/users/self
サーバーは以下も返します。
{
"error": {
"errors": [
{
"domain": "global",
"reason": "notFound",
"message": "Not Found"
}
],
"code": 404,
"message": "Not Found"
}
}
UPD 2: Server to Server Applications に OAuth 2.0 を使用していることを忘れていました。したがって、認証トークンを取得するにhttps://accounts.google.com/o/oauth2/token
は、次の JWT クレーム セットを使用してリクエストを送信します。
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
}
サーバーは以下を返します。
{
"access_token" : "1/8xbJqaOZXSUZbHLl5EOtu1pxz3fmmetKx9W8CV4t79M",
"token_type" : "Bearer",
"expires_in" : 3600
}
oauth_token
そして、次を使用してvariable を定義します。
data = simplejson.loads(result.content)
oauth_token = data['token_type'] + ' ' + data['access_token']