Запросить токен OAuth от BitBucket

Я пытался интегрировать BitBucket в мое приложение в течение последних 4 часов безрезультатно.

Прочитав через документацию RESTful API от BitBucket , я заметил, что вам нужно использовать OAuth – все в порядке, я использую библиотеку OAuthSimple от JR Conlin , которая, если она мне известна (я пробовал oauthphp, но это было довольно сложно – я не нужны все эти варианты для такой небольшой интеграции).

Насколько я понимаю, первым шагом для аутентификации с помощью OAuth является запрос нового токена через POST. При предоставлении необходимых параметров вы должны получить ответ от BitBucket, например:

oauth_token=Z6eEdO8lOmk394WozF9oJyuAv899l4llqo7hhlSLik&oauth_token_secret=Jd79W4OQfb2oJTV0vzGzeXftVAwglnEJ9lumzYcl&oauth_callback_confirmed=true

Для этого я использую cURL и 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); 

Дело в том, что когда я отправляю свой запрос, происходит одна из двух вещей:

  1. Если я отправлю его, как опубликовано здесь, я получу ошибку 401 (я вижу, что через curl_getinfo ($ ch))
  2. Если я устанавливаю curl_setopt ($ ch, CURLOPT_POST, 1), я получаю 400 Bad request

Полученная строка (хранимая в $r ) является пустой строкой. signed_url – это правильно сформированный URL AFAIK, который выглядит примерно так:

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

Если я вручную введу этот адрес в свою адресную строку в браузере, я получу диалог проверки подлинности в API BitBucket, порт 443. Однако я не могу войти в систему с моими учетными данными. Затем он просто будет говорить: «Не удалось проверить запрос OAuth».

Я не знаю, что я делаю неправильно, так как я впервые использовал OAuth.

Любая помощь оценена!

Проблема в том, что Curl проверит сертификат SSL.

Чтобы решить проблему, вы можете сказать Curl игнорировать проверку SSL-сертификатов:

 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);