2012-09-09 25 views
7

He intentado integrar BitBucket en mi aplicación durante las últimas 4 horas en vano.Solicite el token OAuth de BitBucket

Durante la lectura a través BitBucket's RESTful API documentation, me di cuenta de que es necesario utilizar OAuth - no pasa nada, estoy usando OAuthSimple biblioteca de JR Conlin, que si bien por mí (probé oauth-php pero se complicó un poco - que no necesitaba todas esas opciones para una integración tan pequeña).

Por lo que entiendo, el primer paso para autenticarse con OAuth es solicitar un nuevo token a través de POST. Al proporcionar los parámetros necesarios, se debe obtener una respuesta de BitBucket, así:

oauth_token=Z6eEdO8lOmk394WozF9oJyuAv899l4llqo7hhlSLik&oauth_token_secret=Jd79W4OQfb2oJTV0vzGzeXftVAwglnEJ9lumzYcl&oauth_callback_confirmed=true

Para hacer eso, estoy usando Curl y 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); 

El caso es que, cuando envío mi solicitud, una de dos cosas:

  1. Si lo envío como publicado aquí, obtendrá un error 401 (I puede ver que a través de curl_getinfo ($ ch))
  2. si fijo curl_setopt ($ ch, CURLOPT_POST, 1), recibo una solicitud incorrecta 400

La cadena resultante (almacenado en $r) es una cadena vacía. El signed_url es un URL que yo sepa formado correctamente, lo que es algo como esto:

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

Si entro en esa dirección manualmente en mi barra de direcciones en un navegador, voy a conseguir un diálogo de autenticación de la API BitBucket, puerto 443. Sin embargo, no puedo ingresar con mis credenciales. Seguirá diciendo "No se pudo verificar la solicitud de OAuth".

No sé lo que estoy haciendo mal, ya que es la primera vez que uso OAuth.

¡Se agradece cualquier ayuda!

+0

un poco de suerte en esto? Recibo el mismo error que usted ... – ericbae

+0

@ericbae Terminé teniendo una conversación con el Soporte técnico de BitBucket: resulta que tenían información obsoleta en su manual y se corrigió. Tan pronto como me dijeron eso (y realicé los cambios de ruta necesarios) todo funcionó como un amuleto. Asegúrate de estar utilizando las rutas correctas (porque [OAuthSimple] (https://github.com/jrconlin/oauthsimple/) funciona muy bien) – AeroCross

+0

@AeroCross eres capaz de poner tu respuesta y/o las rutas correctas que resultaron en tu ¿fijar? –

Respuesta

1

El problema es que Curl verificará el certificado SSL.

Para resolver el problema se puede decir Curl hacer caso omiso de la verificación de los certificados SSL:

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
+0

intentado pero nada mejor le permite saber –

Cuestiones relacionadas