सवाल PHP कर्ल में मूल प्रमाणीकरण का उपयोग कैसे करें


मुझे मूल प्राधिकरण के साथ PHP कर्ल अनुरोध के साथ समस्या हो रही है।

कमांड लाइन कर्ल यहां दिया गया है:

curl -H "Accept: application/product+xml" "https://{id}:{api_key}@api.domain.com/products?limit=1&offset=0"

मैंने कर्ल हेडर को निम्नलिखित तरीकों से सेट करके कोशिश की है लेकिन यह काम नहीं कर रहा है

Authorization: Basic id:api_key
or 
Authorization: Basic {id}:{api_key}

मुझे प्रतिक्रिया मिलती है "अनुरोध में प्रमाणीकरण पैरामीटर गुम या अमान्य है" लेकिन मैंने उचित आईडी और api_key का उपयोग किया है जो कमांड लाइन कर्ल में काम कर रहा है (मैंने परीक्षण किया)

क्रिप्या मेरि सहायता करे।


44
2017-11-19 05:58


मूल




जवाब:


निम्नलिखित कोड आज़माएं:

$username='ABC';
$password='XYZ';
$URL='<URL>';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$URL);
curl_setopt($ch, CURLOPT_TIMEOUT, 30); //timeout after 30 seconds
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");
$result=curl_exec ($ch);
$status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);   //get status code
curl_close ($ch);

112
2017-11-19 06:05



अच्छा है! मैंने लिया curl_setopt($ch, CURLOPT_HTTPAUTH, 'CURLAUTH_BASIC'); लेकिन वह काम नहीं कर रहा था। आपका इस्तेमाल किया CURLAUTH_ANY और हम सुनहरे हैं! - Joshua Pinter
मैं भी हटाने में सक्षम था CURLOPT_HTTPAUTH लाइन और यह ठीक से काम करते हैं। - Joshua Pinter
@ जोशपिनटर, आप स्ट्रिंग का उपयोग कर रहे थे 'CURLAUTH_BASIC' निरंतर के बजाय CURLAUTH_BASIC - Walter Tross
यह मेरे लिए काम किया curl_setopt($ch, CURLOPT_HTTPHEADER, [ "Authorization: Basic ".base64_encode($this->username.":".$this->password), ]); - FosAvance
Curl_exec () curl_exec () के बाद नहीं आना चाहिए? - Alien Technology


क्या आप इसे आजमा सकते हैं,

 $ch = curl_init($url);
 ...
 curl_setopt($ch, CURLOPT_USERPWD, $username . ":" . $password);  
 ...

REF: http://php.net/manual/en/function.curl-setopt.php


5
2017-11-19 06:01



यह वास्तव में इसके बजाय मेरे लिए काम किया curl_setopt($ch, CURLOPT_USERPWD, "$username:$password"); - Harish Prasanna