我正在请求将特定安全DocuSign uri
的JSON文件检索到服务器。但是,除非我输入授权信息(我确实有),否则我无法返回文件。
<?php
$json = file_get_contents("https://example.docusign.com/sensitiveIDs/moreID");
echo $json
?>
我会在哪里使用PHP中的方法为特定服务器/用户名/密码/访问特定DocuSign服务器所需的其他信息提供授权信息?在PHP中使用这种方案有更好的方法吗?
答案 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;