2012-07-28 14 views
5

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'] 
+1

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 ... –

+0

@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

+0

¿Lo has probado con 'requests', para ver si el problema está en el módulo que usas? –

Respuesta

4

¿Estás seguro de que estás usando OAuth2 correctamente? Me parece que no has iniciado sesión correctamente, y es por eso que estás obteniendo esos errores.

Pruebe las mismas consultas usando Google OAuh2 Playground (https://code.google.com/oauthplayground/) y vea qué sucede.

+0

Gracias por el mensaje, pero como dije, estoy intentando usar OAuth 2.0 para la aplicación Servidor a servidor. En este momento, OAuth 2.0 Playground no admite este método de autorización. En cuanto al uso correcto de OAuth2, creo que si algo estuviera mal sería mostrar otro error. – B7ackAnge7z

+0

¿Por qué no intentas agregar en lugar de agregar la Autorización en los encabezados? Access_token = en la URL? Así es como uso para hacerlo de todos modos. – pyriku

+0

Según la [documentación] (https://developers.google.com/blogger/docs/3.0/using#DeletingAPost), es necesario enviar el encabezado 'Authorization'. ¿Quiso decir que está utilizando 'access_token = ' con OAuth 2.0 para aplicaciones de servidor a servidor? – B7ackAnge7z

Cuestiones relacionadas