无法使用PHP

时间:2017-12-04 11:54:18

标签: php sharepoint sharepoint-online sharepoint-api

我尝试通过PHP在SharePoint子网站上进行身份验证,以便使用REST API,并且我得到了一些奇怪的行为。

我正在使用vgrem库。

这是我正在使用的代码:

$authCtx = new AuthenticationContext($Settings['Url']);
$authCtx->acquireTokenForUser($Settings['UserName'],$Settings['Password']);

$ctx = new ClientContext($Settings['Url'],$authCtx);

网址格式如下:

https://sharepointSite.sharepoint.com/sites/SubSiteName/

我得到的错误是:

  

https://sharepointSite.sharepoint.com/

禁用外部共享

从外观上看,SharePoint网站本身不是外部共享的,但子网站是。

我可以通过浏览器进行身份验证并执行一些简单的GET查询。

库本身会自动尝试在以下位置进行身份验证:

https://sharepointSite.sharepoint.com/_forms/default.aspx?wa=wsignin1.0

我还尝试更改库本身,以便找到子网站auth页面但没有成功。我试过的一些例子:

https://sharepointSite.sharepoint.com/sites/SubSiteName/_forms/default.aspx?wa=wsignin1.0

https://sharepointSite.sharepoint.com/sites/_forms/default.aspx?wa=wsignin1.0

我目前正在尝试但没有成功的是重现在sharepoint网站上完成的身份验证:

  1. https://login.microsoftonline.com/extSTS.srf(成功)
  2. 进行身份验证
  3. 页面被重定向到https://sharepointSite.sharepoint.com/{token}/login(失败,缺少cookie) 事实证明,验证过程不需要此步骤。 < / LI>
  4. https://sharepointSite.sharepoint.com/_forms/default.aspx(尚未到达)
  5. 我添加了Cookie,但似乎后端发生了其他事情,或者某些Cookie丢失了。

    如果有人提供任何帮助,我将不胜感激。与此同时,我将继续努力。

    PS:我已经在SO上搜索了大部分答案,但他们要么提到不同版本的Sharepoint和库,要么已过时(尝试过它们,但没有成功)。

    编辑:最后不需要第2步。

1 个答案:

答案 0 :(得分:0)

因为看起来问题出在图书馆本身。我通过添加字符串

解决了这个问题
  

&#34;&安培;源= /位点/ SubSiteName /&#34;

到网址。这条线本身变成了:

//$subsite = "&Source=https://sharepointSite.sharepoint.com/sites/SubSiteName/"
$response = Requests::post($url.$subsite,null,$token, true, false);

在函数acquireAuthenticationCookies($token)中。额外的false是添加的新变量,以便仅对相关请求应用curl选项。

此外,我不得不使用cookie设置弄乱一点,因为库在重定向时会自动丢弃它们。我必须在请求中添加以下设置:

curl_setopt($ch, CURLOPT_COOKIESESSION, false);
curl_setopt($ch, CURLOPT_COOKIEFILE, "");

编辑:忘记放入我编辑过的文件。它是

  

PHP-SPO / SRC /运行时间/认证/ SamlTokenProvider.php