【发布时间】:2020-02-11 23:29:54
【问题描述】:
如何向某人发送使用 Adobe EchoSign API v5 进行签名的文档?对于 API 版本 5,我只能找到一个使用 Java 的示例。但我需要它在 PHP 中。如果我使用任何早期版本,它需要一个“API 密钥”,但在当前版本的 API 中,我找不到我的 API 密钥。我什至在 PHP 中找不到任何示例代码。
【问题讨论】:
标签: php api oauth-2.0 echosign
如何向某人发送使用 Adobe EchoSign API v5 进行签名的文档?对于 API 版本 5,我只能找到一个使用 Java 的示例。但我需要它在 PHP 中。如果我使用任何早期版本,它需要一个“API 密钥”,但在当前版本的 API 中,我找不到我的 API 密钥。我什至在 PHP 中找不到任何示例代码。
【问题讨论】:
标签: php api oauth-2.0 echosign
当前版本中不再有 API 密钥,因为它现在使用“访问令牌”。这就是我在我的 PHP 应用程序上所做的。
【讨论】:
Adobe Sign 已更改其身份验证流程,不再使用“API 密钥”,而是使用更安全的“访问令牌”。
您可以将任何基于 PHP 的第三方 rest API 客户端库用于 Adobe Sign API 调用,直到 Adobe Sign 本身提供 PHP 的 SDK。
【讨论】:
我花了一段时间,但我得到了它,我希望它可以帮助其他人,在使用 composer (https://github.com/kevinem/adobe-sign-php/) 安装后,你需要创建你的沙盒页面,对我来说是 /vendor/kevinem/ 中的 index.php adobe-sign-php/ 那么你需要在我的例子中包含 2 个类 AdobeSign 和 Psr7,因为我需要上传 2 个文档。
require "../../../vendor/autoload.php";
use KevinEm\AdobeSign\AdobeSign;
use GuzzleHttp\Psr7;
这是我配置我的 $provider 的方式,call backurl 必须与 adobe 后端中的相同,并且我在 AdobeSign.php 中手动更改了数据中心
$provider = new KevinEm\OAuth2\Client\AdobeSign([
'clientId' => 'YOUR_APP_ID',
'clientSecret' => 'YOUR_APP_SECRET',
'redirectUri' => 'YOUR_BACK_URL',
'dataCenter' => 'secure.na2',
'scope' => ['user_login:self',
'agreement_write:self',
'widget_write:self',
'library_write:self',
'agreement_send:self'
]
]);
然后您需要创建一个包含所有 .pdf 文档 URL 的数组。我叫 $archivos。
$accessToken = $adobeSign->getAccessToken($_GET['code']);
$adobeSign->setAccessToken($accessToken->getToken());
$todosDoc = array();
foreach ($archivos as $doc) {
$file_path = __DIR__.$doc;
$file_stream = Psr7\FnStream::decorate(Psr7\stream_for(file_get_contents($file_path)), [
'getMetadata' => function() use ($file_path) {
return $file_path;
}
]);
$multipart_stream = new Psr7\MultipartStream([
[
'name' => 'File',
'contents' => $file_stream
]
]);
$transient_document = $adobeSign->uploadTransientDocument($multipart_stream);
array_push($todosDoc, $transient_document);
}
$adobeSign->createAgreement([
'documentCreationInfo' => [
'fileInfos' => $todosDoc,
'name' => 'My Document Test',
'signatureType' => 'ESIGN',
'recipientSetInfos' => [
'recipientSetMemberInfos' => [
'email' => 'orlando@yoursigner.com'
],
'recipientSetRole' => [
'SIGNER'
]
],
'mergeFieldInfo' => [
[
'fieldName' => 'Name',
'defaultValue' => 'John Doe'
]
],
'signatureFlow' => 'SENDER_SIGNATURE_NOT_REQUIRED'
]
]);
【讨论】:
Adobe eSign 现在使用 oAuth 进行身份验证,并且针对不同的语言有很多不同的库
【讨论】: