Enviando una solicitud DELETE a la API REST de Blogger (v3.0), intento eliminar una publicación usando delete method. Para este uso el siguiente código:Intentar eliminar una publicación con la API de Blogger devuelve el error "no encontrado"
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)
Pero el servidor devuelve:
{
"error": {
"errors": [
{
"domain": "global",
"reason": "notFound",
"message": "Not Found"
}
],
"code": 404,
"message": "Not Found"
}
}
Sin embargo, puedo recuperar información acerca de esta entrada, usando el siguiente código:
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)
En En este momento, no puedo entender qué estoy haciendo mal: la solicitud está autorizada, blogId
y postId
son correctos, pero de todos modos, el servidor devuelve "no". encontrado "error".
Si sabes cómo resolver este problema o puedes dar consejos útiles, ayúdame por favor.
Gracias por su tiempo y consideración de este asunto.
UPD 1: Si envío peticiones a las siguientes direcciones URL:
# https://www.googleapis.com/blogger/v3/users/{userID}
# https://www.googleapis.com/blogger/v3/users/self
El servidor también devuelve:
{
"error": {
"errors": [
{
"domain": "global",
"reason": "notFound",
"message": "Not Found"
}
],
"code": 404,
"message": "Not Found"
}
}
UPD 2: me olvidaba decir que estoy usando OAuth 2.0 for Server to Server Applications. Por lo tanto, para obtener token de autorización, les mando solicitud a https://accounts.google.com/o/oauth2/token
utilizando el siguiente conjunto de reivindicaciones 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
}
el servidor devuelve:
{
"access_token" : "1/8xbJqaOZXSUZbHLl5EOtu1pxz3fmmetKx9W8CV4t79M",
"token_type" : "Bearer",
"expires_in" : 3600
}
y definir variables oauth_token
, usando:
data = simplejson.loads(result.content)
oauth_token = data['token_type'] + ' ' + data['access_token']
Teniendo en cuenta que es posible que ya haya comprobado los ID y el token de autenticación, le sugiero que pruebe sus consultas manualmente con [cURL] (http://en.wikipedia.org/wiki/CURL). Dependiendo del resultado, sabrá si el problema es cómo construye su url, o alguna otra cosa ... –
@AlexisHuet, gracias por su sugerencia, pero de todos modos, estoy seguro de que el problema no está en la URL. Sin duda, el problema es "algo más". – B7ackAnge7z
¿Lo has probado con 'requests', para ver si el problema está en el módulo que usas? –