【问题标题】:Creating User on ownCloud using php curl http post使用 php curl http post 在 ownCloud 上创建用户
【发布时间】:2016-04-06 14:58:46
【问题描述】:

owncloud 相关网站上的以下链接和 stackoverflow 本身的所有相关信息都以损坏的形式显示:

  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. 我已经在我的 localhost 中设置了一个 owncloud 服务器,
  2. 我有一个 html 页面,其中包含用户名和密码的字符串值
  3. 我发送页面请求以由以下 php 脚本处理。

    "; // 加载到局部变量 $userName = $_POST['用户名']; $RRpassword = $_POST['密码']; 回声“你好”。 $用户名。 "
    "; echo "你的密码是 "。 $RR密码。 "
    "; // 添加数据,到owncloud post数组,然后发送创建新用户的http请求 $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 "
    在owncloud中创建了一个新用户"; ?>

我得到如下输出:

开始处理凭据,首先将其存储在本地 variables
你好 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;

即使这个失败了。

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

【问题讨论】:

    标签: php api authentication curl owncloud


    【解决方案1】:

    您的链接帖子 (Create user on Owncloud) 显示您需要一个带有一些凭据的基本身份验证标头。您需要提供管理员凭据,afaict。

    【讨论】:

    • 是的,我正在尝试了解设置、凭据等。但我不确定正确的方法是什么。
    【解决方案2】:

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

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

    CURLOPT_RETURNTRANSFER 中还有一个错字($curl 而不是$ch)。

    【讨论】:

    • 感谢您指出错字。我修好了它。但错误似乎仍然存在。
    • 您的代码现在很好。我不熟悉 OwnCloud,但我的猜测是凭据不正确或不允许用户访问 API。
    • 添加该行对输出没有影响,因为我仍然得到未经授权的响应。你是对的,精通自己的云 API 的人可以提供帮助。感谢您的回复。
    【解决方案3】:

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

    那里是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>
    

    这是输出:

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-11
      • 1970-01-01
      • 2015-10-14
      • 1970-01-01
      • 2011-01-09
      相关资源
      最近更新 更多