2012-09-09 12 views
7

से OAuth टोकन का अनुरोध करें मैं पिछले 4 घंटों के लिए अपने आवेदन में बिटबकेट को एकीकृत करने की कोशिश नहीं कर रहा हूं।बिटबकेट

BitBucket's RESTful API documentation के माध्यम से पढ़ते समय, मैंने देखा है कि आप OAuth का उपयोग करने की जरूरत है - यह ठीक है, मैं जे आर कॉनलिन के OAuthSimple पुस्तकालय है, जो ठीक है, तो मेरे द्वारा (मैं oauth-php की कोशिश की उपयोग कर रहा हूँ, लेकिन यह थोड़े जटिल था - मैं जरूरत नहीं थी इस तरह के एक छोटे से एकीकरण के लिए उन सभी विकल्पों)।

जो मैं समझता हूं, ओएथ के साथ प्रमाणित करने का पहला चरण 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 गलत अनुरोध

जिसके परिणामस्वरूप स्ट्रिंग ($r में संग्रहीत) स्ट्रिंग खाली है मिलता है। signed_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

अगर मैं एक ब्राउज़र में मेरी एड्रेस बार में मैन्युअल कि पता दर्ज करें, मैं BitBucket एपीआई के लिए एक प्रमाणीकरण संवाद मिलेगा, पोर्ट 443. हालांकि, मैं अपने प्रमाण पत्र के साथ लॉगिन नहीं कर सकता। फिर यह कहता रहेगा "ओथ अनुरोध को सत्यापित नहीं कर सका।"

मुझे नहीं पता कि मैं क्या गलत कर रहा हूं, क्योंकि यह ओएथ का उपयोग करने वाला मेरा पहला समय है।

किसी भी मदद की सराहना की!

+0

इस पर किसी भी भाग्य:

समस्या आप कर्ल बता SSL प्रमाणपत्र के सत्यापन की उपेक्षा कर सकते हैं हल करने के लिए? मुझे आपके जैसा ही त्रुटि मिल रही है ... – ericbae

+0

@ericbae मैंने बिटबकेट के तकनीकी सहायता के साथ बातचीत की - यह पता चला कि उनके पास मैन्युअल में पुरानी जानकारी थी, और इसे ठीक किया गया था। जैसे ही उन्होंने मुझे बताया कि (और मैंने आवश्यक पथ परिवर्तन किए हैं) सबकुछ एक आकर्षण की तरह काम करता है। सुनिश्चित करें कि आप सही पथ का उपयोग कर रहे हैं (कारण [OAuthSimple] (https://github.com/jrconlin/oauthsimple/) बहुत अच्छा काम करता है) – AeroCross

+0

@ एयरोक्रॉस क्या आप अपना उत्तर और सही पथ डाल सकते हैं जिसके परिणामस्वरूप आपका ठीक कर? –

उत्तर

1

समस्या यह है कि कर्ल SSL प्रमाणपत्र को सत्यापित करेगा।

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

ने कोशिश की लेकिन कुछ भी आपको सबसे अच्छा नहीं देता जानना –

संबंधित मुद्दे