首页 文章

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

提问于
浏览
5

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

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

  • 我在 localhost 中设置了一个 owncloud 服务器,

  • 我有一个 html 页面,其中包含用户名和密码的字符串值

  • 我发送页面请求由以下 PHP 脚本处理。

<?php
echo "Begun processing credentials , first it will be stored in local variables" . "
"; // Loading into local variables $userName = $_POST['username']; $RRpassword = $_POST['password']; echo "Hello " . $userName . "
"; echo "Your password is " . $RRpassword . "
"; // 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 "
Created a new user in owncloud"; ?>

我得到的输出如下:

开始处理凭据,首先它将存储在本地变量中
你好弗兰克
您的密码是 frankspassword
失败 997 未经授权
在 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;

即使这个也失败了。

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

3 回答

  • 1

    owncloud 文档声明身份验证是通过基本 HTTP 身份验证标头完成的。您目前正在做的是将凭证作为参数发送到 API 调用。您需要添加以下行:

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

    CURLOPT_RETURNTRANSFER($curl而不是$ch)也有拼写错误。

  • 1

    由于这个问题具体涉及 owncloud,我创建了一个帐户并在owncloud 论坛中发布了一个将此链接与其关联的问题。

    在那里我被 owncloud master @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" . "
    "; // Loading into local variables $userName = $_POST['username']; $RRpassword = $_POST['password']; echo "Hello " . $userName . "
    "; echo "Your password is " . $RRpassword . "
    "; // 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 . "
    "; $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 "
    Created a new user in owncloud
    "; // Add to a group called 'Users' $groupUrl = $url . '/' . $userName . '/' . 'groups'; echo "Created groups URL is " . $groupUrl . "
    "; $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 "
    Added the new user to default group in owncloud"; ?> </pre>

    这是输出:

    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

    由于您的链接帖子(在 Owncloud 上创建用户)显示您需要具有一些凭据的基本身份验证标头。您需要提供管理员凭据,afaict。

相关问题