如果需要URI的授权,如何在PHP中使用get_file_contents?

时间:2016-06-07 16:15:29

标签: php json https get docusignapi

我正在请求将特定安全DocuSign uri的JSON文件检索到服务器。但是,除非我输入授权信息(我确实有),否则我无法返回文件。

<?php
    $json = file_get_contents("https://example.docusign.com/sensitiveIDs/moreID");
    echo $json
?>

我会在哪里使用PHP中的方法为特定服务器/用户名/密码/访问特定DocuSign服务器所需的其他信息提供授权信息?在PHP中使用这种方案有更好的方法吗?

2 个答案:

答案 0 :(得分:0)

这取决于授权的实施方式。如果是基本或摘要HTTP身份验证,则在URL中指定它:

file_get_contents("https://$USER:$PASSWORD@example.docusign.com/sensitiveIDs/moreID");

基于Cookie的身份验证要困难得多(并且可能更容易使用Curl甚至更复杂的系统,如Guzzle。如果是oauth2,那么您可能需要oauth2 library

答案 1 :(得分:0)

您的通话需要包含身份验证以进行GET调用以检索文件。

如果您的应用是由人类使用Oauth启动来检索访问权限并刷新令牌。然后包含带有GET请求的访问令牌。

如果您的应用是&#34;系统应用&#34;如果要自动检索文件,则应使用X-DocuSign-Authentication进行身份验证 - 在HTTPS请求中包含以下标头。由于请求是HTTPS,因此内容在线路上加密:

X-DocuSign-Authentication: <DocuSignCredentials><Username>{name}</Username><Password>{password}</Password><IntegratorKey>{integrator_key}</IntegratorKey></DocuSignCredentials>

将{name}替换为您的电子邮件地址(无大括号)等

底线是您无法使用file_get_contents Php方法。相反,您可以执行以下操作:

使用https://github.com/rmccue/Requests或类似的图书馆来帮助解决 https 请求。 (由于安全问题,不允许使用http。)

(未经测试的代码)

$url = $base_url . $the_url_section_for_this_call 
$headers = array('X-DocuSign-Authentication' => 
'<DocuSignCredentials><Username>your_name</Username><Password>your_password</Password><IntegratorKey>your_integrator_key</IntegratorKey></DocuSignCredentials>');
$request = Requests::get($url, $headers);
# Check that the call succeeded (either 200 or 201 depending on the method
$status_code = $request->status_code;
if ($status_code != 200 && $status_code != 201) {
    throw new Exception('Problem while calling DocuSign');
}
$json = $request->body;