2011-12-15 9 views
5

He podido obtener con éxito un token de acceso de Vimeo utilizando la API de Scribe.Integración de OAuth con Vimeo usando Scribe

Sin embargo, cuando intento acceder a un recurso protegido, aparece un error de firma no válido. Mi OAuthService que utilizo para probar un acceso a un recurso protegido, se parece a:

OAuthService service = new ServiceBuilder() 
    .provider(VimeoApi.class) 
    .apiKey(APIKEY) 
    .apiSecret(API_SECRET) 
    .signatureType(SignatureType.QueryString) 
    .build(); 

Entonces, hago una petición de la siguiente manera:

OAuthRequest orequest = new OAuthRequest(Verb.GET, "http://vimeo.com/api/rest/v2"); 
    orequest.addBodyParameter("method", "vimeo.videos.upload.getQuota"); 

Esta falla y dime que la firma no es válida .

+1

El parámetro método será parte de la firma , ya que todos los parámetros de OAuth están ordenados, codificados y agregados a la cadena base. ¿Cómo sabes que eso no es parte de la firma? –

+0

@Pablo ¡tienes razón! Usé BaseStringExtractImpl y veo el parámetro. Gracias hombre. No estoy seguro de por qué me dice que la firma no es válida, ¿tiene alguna idea? – stevebot

+0

@Pablo No tiene sentido para mí que esto no esté funcionando. Parece que le paso todos los parámetros válidos a Scribe. – stevebot

Respuesta

3

El problema es,

orequest.addBodyParameter("method", "vimeo.videos.upload.getQuota"); 

Scribe añadió entonces este parámetro para la cadena de base utilizada para formar la firma. Vimeo vio que estaba haciendo un GET y que el parámetro method estaba en el cuerpo de la solicitud y no en la cadena de consulta, por lo que no lo incluyó en la cadena base. Por lo tanto, la firma que Vimeo esperaba era diferente a la que generó Scribe.

estoy haciendo un GET sin embargo, así que debería estar pasando este parámetro en la cadena de consulta,

orequest.addQuerystringParameter("method", "vimeo.videos.upload.getQuota"); 

Esto funciona, al igual que:

OAuthRequest orequest = new OAuthRequest(Verb.POST, "http://vimeo.com/api/rest/v2"); 
    orequest.addBodyParameter("method", "vimeo.videos.upload.getQuota"); 
+0

Vaya. ¡Genial, encontraste la respuesta! +1 –