使用php curl http post在ownCloud上创建用户

Sye*_*bas 5 php authentication api curl owncloud

在owncloud相关网站和stackoverflow本身的以下链接中以破碎形式显示所有相关信息:

  1. 用户供应Api - Owncloud
  2. PHP + curl,HTTP POST示例代码
  3. 使用Ajax Jquery在ownCloud上创建用户
  4. 用户配置 - php身份验证错误

我想做一些非常简单的事情:

  1. 我在localhost中设置了一个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";
    ?>
    

我得到的输出如下:

开始处理凭据,首先它将存储在本地变量中
Hello Frank
您的密码是frankspassword
failure 997 Unauthorized
在owncloud中创建一个新用户

我还尝试使用以下php脚本登录自己的云:

// 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;
Run Code Online (Sandbox Code Playgroud)

即使这个也失败了.

所以总之它不起作用.我也无法通过类似的脚本登录owncloud.这样做的正确方法是什么?我缺少什么设置?有人可以帮忙吗?

Sye*_*bas 2

由于这个问题专门与 owncloud 有关,因此我创建了一个帐户并在owncloud 论坛中发布了一个将此问题链接到它的问题。

owncloud 大师 @RealRancor 向我建议了以下内容:

刚刚再看了一下,也许它很容易替换:

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

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

如文档中所示。

令人惊奇的是,它就像一种魅力。这是整个修改后的 php 脚本:

<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>
Run Code Online (Sandbox Code Playgroud)

这是输出:

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
Run Code Online (Sandbox Code Playgroud)