2011-12-15 8 views
5

Sono riuscito a ottenere correttamente un token di accesso da Vimeo utilizzando l'API Scribe.Integrazione OAuth con Vimeo utilizzando Scribe

Tuttavia, quando provo ad accedere a una risorsa protetta, viene visualizzato un errore di firma non valido. Il mio OAuthService che uso per provare l'accesso a una risorsa protetta, si presenta come:

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

Poi, faccio una richiesta facendo quanto segue:

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

questo non riesce e mi dicono che la firma non è valida .

+1

Il metodo param sarà parte della firma , poiché tutti i parametri OAuth sono ordinati, codificati e aggiunti alla stringa di base. Come sai che non fa parte della firma? –

+0

@Pablo hai ragione! Ho usato BaseStringExtractImpl e ho visto il parametro. Grazie uomo. Non sono sicuro del motivo per cui mi sta dicendo che la firma non è valida, hai qualche idea? – stevebot

+0

@Pablo Non ha senso per me che questo non funzioni. Mi sembra di passare tutti i parametri validi a Scribe. – stevebot

risposta

3

Il problema è,

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

Scribe quindi aggiunto questo parametro alla stringa base utilizzata per formare la firma. Vimeo ha visto che stavo facendo un GET e che il parametro method era nel corpo della richiesta e non nella stringa di query, quindi non lo includeva nella stringa di base. Pertanto, la firma Vimeo prevista era diversa da quella di Scribe generata.

Sto facendo un GET però così dovrei passare questo parametro nella stringa di query,

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

questo funziona, come direbbe:

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

Oops. fantastico hai trovato la risposta! +1 –