Ho cercato di integrare BitBucket nella mia applicazione per le ultime 4 ore senza alcun risultato.Richiesta token OAuth da BitBucket
Durante la lettura attraverso BitBucket's RESTful API documentation, ho notato che è necessario utilizzare OAuth - va bene, sto usando la biblioteca di JR Conlin OAuthSimple, che se bene per me (ho provato oauth-php ma era un po 'complicato - non ho avuto bisogno tutte queste opzioni per un'integrazione così piccola).
Per quello che ho capito, il primo passo per autenticare con OAuth è richiedere un nuovo token via POST. Nel fornire i parametri necessari, si dovrebbe ottenere una risposta da BitBucket, come questo:
oauth_token=Z6eEdO8lOmk394WozF9oJyuAv899l4llqo7hhlSLik&oauth_token_secret=Jd79W4OQfb2oJTV0vzGzeXftVAwglnEJ9lumzYcl&oauth_callback_confirmed=true
Per fare questo, sto usando curl e OAuthSimple:
$key = 'key_provided_by_bitbucket';
$secret = 'key_provided_by_bitbucket';
$path = 'https://api.bitbucket.org/1.0/oauth/request_token';
$params = array(
'oauth_consumer_key' => $key,
'oauth_nonce' => base_convert(mt_rand(10000, 90000), 10, 32) . 'a',
'oauth_signature' => 'HMAC-SHA1',
'oauth_signature_method' => 'HMAC-SHA1',
'oauth_timestamp' => time(),
'oauth_callback' => base_url('dashboard'),
'oauth_version' => '1.0a'
);
$oauth = new OAuthSimple($key, $secret);
$result = $oauth->sign(array(
'action' => 'POST',
'path' => $path,
'parameters' => $params
));
// load resulting url into a string
$ch = curl_init($result['signed_url']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$r = curl_exec($ch);
curl_close($ch);
Il fatto è che, quando invio la mia richiesta, una delle due cose accada:
- Se invio piace postato qui, mi metterò un errore di 401 (vedo che tramite curl_getinfo ($ ch))
- se ho impostato curl_setopt ($ ch, CURLOPT_POST, 1), ho un 400 Richiesta
La stringa risultante (memorizzato in $r
) è una stringa vuota. Il signed_url
è un URL per quanto ne so formata correttamente, che è qualcosa di simile:
https://api.bitbucket.org/1.0/oauth/request_token?oauth_callback=http%3A%2F%2Flocalhost%2Fidv&oauth_consumer_key=key_provided_by_bitbucket&oauth_nonce=b47a&oauth_signature=3A1R%2FoKxTqh6Q23poaS%2BVNzhwpE%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1347167282&oauth_version=1.0a
Se entro manualmente l'indirizzo nella mia barra degli indirizzi in un browser, vado a prendere un dialogo di autenticazione per l'API BitBucket, porta 443. Non riesco ad accedere con le mie credenziali, però. Quindi continuerà a dire "Impossibile verificare la richiesta OAuth".
Non so cosa sto facendo male, poiché è la prima volta che utilizzo OAuth.
Qualsiasi aiuto è apprezzato!
po 'di fortuna su questo? Sto ottenendo lo stesso errore di te ... – ericbae
@ericbae Ho finito per avere una conversazione con il supporto tecnico di BitBucket - si scopre che avevano informazioni obsolete nel loro manuale, ed è stato corretto. Appena mi hanno detto che (e ho apportato le necessarie modifiche al percorso) tutto ha funzionato come un incantesimo. Assicurati di utilizzare i percorsi corretti (perché [OAuthSimple] (https://github.com/jrconlin/oauthsimple/ funziona perfettamente) – AeroCross
@AeroCross sei in grado di mettere la tua risposta e/o i percorsi corretti che hanno portato alla tua risolvere? –