2016-01-02 5 views
5

सभी प्रासंगिक जानकारी ownCloud संबंधित वेबसाइटों पर और से लिंक का अनुसरण में टूट रूप में मौजूद नहीं है php कर्ल http पद का उपयोग कर stackoverflow ही:ownCloud पर उपयोगकर्ता बनाना

  1. User Provisioning Api - ownCloud
  2. PHP + curl, HTTP POST sample code
  3. Create user on ownCloud using Ajax Jquery
  4. User Provisioning - php Authentication error
  1. मैं सेटअप मेरे स्थानीय होस्ट में एक ownCloud सर्वर है,
  2. मैं एक html पृष्ठ है कि उपयोगकर्ता नाम और पासवर्ड की स्ट्रिंग मान
  3. मैं भेज में लेता है: मैं बहुत ही सरल कुछ करने के लिए कोशिश कर रहा हूँनिम्न PHP स्क्रिप्ट द्वारा संसाधित होने का पृष्ठ अनुरोध।

     
    <?php 
    echo "Begun processing credentials , first it will be stored in local variables" . "<br/>"; 
    
    // Loading into local variables 
    $userName = $_POST['username']; 
    $RRpassword = $_POST['password']; 
    
    echo "Hello " . $userName . "<br/>"; 
    echo "Your password is " . $RRpassword . "<br/>"; 
    
    // Add data, to owncloud post array and then Send the http request for creating a new user 
    $ownCloudPOSTArray = array('username' => $userName, 'password' => $RRpassword); 
    
    $url = 'http://localhost/owncloud/ocs/v1.php/cloud/users'; 
    $ch = curl_init($url); 
    
    curl_setopt($ch, CURLOPT_POST, 1); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $ownCloudPOSTArray); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    
    $response = curl_exec($ch); 
    curl_close($ch); 
    
    echo "<br/>Created a new user in owncloud"; 
    ?> 
    

मैं उत्पादन की तरह:

शुरू हो प्रसंस्करण साख, पहले यह स्थानीय चर में
नमस्ते फ्रैंक
आपका पासवर्ड frankspassword
विफलता 997 अनधिकृत
बनाया गया है संग्रहीत किया जाएगा अपने नए उपयोगकर्ता में

// Login As Admin 
$ownAdminname = 'ownAdmin'; 
$ownAdminpassword = 'ownAdminPassword'; 

$ch = curl_init('http://localhost/owncloud'); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); 
curl_setopt($ch, CURLOPT_USERPWD, "$ownAdminname:$ownAdminpassword"); 
$output = curl_exec($ch); 
curl_close($ch); 
echo $output; 

यहां तक ​​कि यह एक विफल रहता है:मैं भी निम्नलिखित php स्क्रिप्ट का उपयोग कर बादल ही में प्रवेश करने की कोशिश की।

तो संक्षेप में यह काम नहीं करता है। मैं खुद को समान स्क्रिप्ट के माध्यम से लॉगिन करने में भी असमर्थ हूं। ऐसा करने का सही तरीका क्या है? मुझे कौन सी सेटिंग्स याद आ रही हैं? क्या कोई मदद कर सकता है?

उत्तर

1

चूंकि यह प्रश्न विशेष रूप से स्वामित्व से संबंधित है, इसलिए मैंने एक खाता बनाया और owncloud forum में इसे जोड़ने के लिए एक प्रश्न पोस्ट किया।

वहाँ मैं ownCloud मास्टर @RealRancor, निम्नलिखित द्वारा सुझाव दिया गया था,

बस फिर से विचार, को बदलने के लिए हो सकता है इसकी सिर्फ आसान था:

$ url = 'http://localhost/owncloud/ocs/v1.php/cloud/users';

$ url = 'http://adminuser:[email protected]/owncloud/ocs/v1.php/cloud/users' के साथ

; प्रलेखन में दिखाए गए अनुसार

और आश्चर्यजनक रूप से यह एक आकर्षण की तरह काम करता था।

<pre> 
&lt;?php 
echo "Begun processing credentials , first it will be stored in local variables" . "<br/>"; 

// Loading into local variables 
$userName = $_POST['username']; 
$RRpassword = $_POST['password']; 

echo "Hello " . $userName . "<br/>"; 
echo "Your password is " . $RRpassword . "<br/>"; 

// Login Credentials as Admin 
$ownAdminname = 'ownAdmin'; 
$ownAdminpassword = 'ufi2016%%'; 


// Add data, to owncloud post array and then Send the http request for creating a new user 
$url = 'http://' . $ownAdminname . ':' . $ownAdminpassword . '@localhost/owncloud/ocs/v1.php/cloud/users'; 
echo "Created URL is " . $url . "<br/>"; 

$ownCloudPOSTArray = array('userid' => $userName, 'password' => $RRpassword); 

$ch = curl_init($url); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $ownCloudPOSTArray); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
$response = curl_exec($ch); 
curl_close($ch); 
echo "Response from curl :" . $response; 
echo "<br/>Created a new user in owncloud<br/>"; 

// Add to a group called 'Users' 
$groupUrl = $url . '/' . $userName . '/' . 'groups'; 
echo "Created groups URL is " . $groupUrl . "<br/>"; 

$ownCloudPOSTArrayGroup = array('groupid' => 'Users'); 

$ch = curl_init($groupUrl); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $ownCloudPOSTArrayGroup); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
$response = curl_exec($ch); 
curl_close($ch); 
echo "Response from curl :" . $response; 
echo "<br/>Added the new user to default group in owncloud"; 

?> 
</pre> 

और यहाँ उत्पादन किया जाता है:: तो यहाँ पूरे संशोधित PHP स्क्रिप्ट है

Begun processing credentials , first it will be stored in local variables 
Hello Frank 
Your password is frankspassword 
Created URL is http://ownAdmin:ufi2016%%@localhost/owncloud/ocs/v1.php/cloud/users 
Response from curl : ok 100 
Created a new user in owncloud 
Created groups URL is http://ownAdmin:ufi2016%%@localhost/owncloud/ocs/v1.php/cloud/users/Frank/groups 
Response from curl : ok 100 
Added the new user to default group in owncloud 
0

आपकी लिंक्ड पोस्ट (Create user on Owncloud) के रूप में दिखाता है कि आपको कुछ प्रमाण-पत्रों के साथ मूल लेख शीर्षलेख की आवश्यकता है। आपको व्यवस्थापक प्रमाण-पत्र, afaict प्रदान करने की आवश्यकता है।

+0

हाँ मैं सेटिंग्स को समझने के लिए, साख आदि कोशिश कर रहा हूँ लेकिन मुझे यकीन है सही तरीका क्या है क्या नहीं कर रहा हूँ । –

1

स्वयं क्लाउड दस्तावेज बताता है कि प्रमाणीकरण बुनियादी HTTP प्रमाणीकरण शीर्षलेख के माध्यम से किया जाता है। आप वर्तमान में क्या कर रहे हैं एपीआई कॉल के पैरामीटर के रूप में प्रमाण पत्र भेज रहा है। आप निम्न पंक्ति जोड़ने की जरूरत:

curl_setopt($ch, CURLOPT_USERPWD, $username . ":" . $RRpassword); 

वहाँ भी CURLOPT_RETURNTRANSFER लिखने में कोई गलती ($ch के बजाय $curl) है।

+0

टाइपो को इंगित करने के लिए धन्यवाद। मैंने ठीक कर दिया। लेकिन त्रुटि जारी है। –

+0

आपका कोड अभी ठीक है। मैं Own क्लाउड से अपरिचित हूं लेकिन मेरा अनुमान है कि या तो क्रेडेंशियल गलत हैं या उपयोगकर्ता को एपीआई तक पहुंचने की अनुमति नहीं है। – MarkM

+0

लाइन जोड़ने से आउटपुट पर कोई प्रभाव नहीं पड़ता है क्योंकि मुझे अभी भी अनधिकृत प्रतिक्रिया मिलती है। और आप सही हैं कि क्लाउड एपीआई के साथ अच्छी तरह से कोई भी मदद कर सकता है। और आपकी प्रतिक्रिया के लिए धन्यवाद। –

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