2016-01-02 5 views
5

Es ist alles der relevanten Informationen in den folgenden Links auf ownCloud verwandten Webseiten in gebrochener Form und von Stackoverflow selbst:Benutzer anlegen auf ownCloud php curl http Post mit

  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

Ich versuche, etwas zu tun, ganz einfach:

  1. ich Setup ein ownCloud-Server in meinem localhost,
  2. ich eine HTML-Seite, die
  3. in String-Werte von Benutzernamen und Passwort nimmt ich sende die Seitenanforderung, die von dem folgenden PHP-Skript verarbeitet werden soll.

     
    <?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"; 
    ?> 
    

ich die Ausgabe wie:

Anmeldeinformationen begonnen Verarbeitung, zuerst wird es in lokalen Variablen gespeichert werden
Hallo Frank
Ihr Passwort ist frankspassword
Ausfall 997 Unauthorized
Erstellt ein neuer Benutzer in owncloud

Ich habe auch versucht Wolke mit folgenden PHP-Skript zu besitzen um sich einzuloggen:

// 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; 

Auch diese ausfällt.

Kurz gesagt, es funktioniert nicht. Ich kann mich auch nicht über ein ähnliches Skript wie owncloud anmelden. Was ist der richtige Weg, dies zu tun? Welche Einstellungen fehle ich? Kann mir bitte jemand helfen?

Antwort

1

Da sich diese Frage speziell auf owncloud bezieht, habe ich einen Account erstellt und eine Frage an diesen in owncloud forum gestellt.

Dort wurde ich von dem ownCloud Meister vorgeschlagen @RealRancor, die folgenden,

nur noch einen Blick hatte, vielleicht ist es nur leicht zu ersetzen:

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

mit

$ url = 'http://adminuser:[email protected]/owncloud/ocs/v1.php/cloud/users';

wie in der Dokumentation gezeigt.

Und erstaunlicherweise hat es wie ein Charme gearbeitet. Hier ist also der gesamte modifizierte PHP-Skript:

<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> 

Und hier ist der Ausgang:

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

Als Ihr verknüpfter Beitrag (Create user on Owncloud) zeigt, dass Sie eine grundlegende Auth-Header mit einigen Anmeldeinformationen benötigen. Sie müssen die Administrator-Anmeldedaten angeben.

+0

Ja Ich versuche, die Einstellungen, Ausweise usw. zu verstehen, aber ich bin nicht sicher, was ist der richtige Weg . –

1

In der Dokumentation zu owncloud wird angegeben, dass die Authentifizierung mithilfe eines einfachen HTTP-Authentifizierungsheaders erfolgt. Sie senden die Anmeldeinformationen als Parameter an den API-Aufruf. Sie müssen die folgende Zeile hinzufügen:

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

Es gibt auch einen Tippfehler in CURLOPT_RETURNTRANSFER ($curl statt $ch).

+0

Danke für den Hinweis auf den Tippfehler. Ich habe es repariert. Aber der Fehler scheint zu bestehen. –

+0

Ihr Code ist jetzt in Ordnung. Ich bin mit OwnCloud nicht vertraut, aber meine Vermutung ist, dass entweder die Zugangsdaten falsch sind oder der Benutzer nicht auf die API zugreifen darf. – MarkM

+0

Das Hinzufügen der Zeile hat keine Auswirkung auf die Ausgabe, da ich immer noch nicht autorisierte Antworten erhalte. Und Sie haben Recht, jemand, der mit der eigenen Cloud-API vertraut ist, kann helfen. Und danke für deine Antwort. –