API错误401-连接到API时出错

时间:2019-09-27 17:47:35

标签: php laravel docusignapi

我们开始看到这些DocuSign例外09/24/2019:

DocuSign \ eSign \ ApiException (401)
[401] Error connecting to the API (https://NA3.docusign.net/restapi/v2/login_information)

围绕我们的DocuSign逻辑的代码都没有被触及近六个月。所以我不知道为什么会抛出该异常。

我们正在使用以下软件包(与此相关):

laravel/framework v5.8.35
docusign/esign-client 3.0.1
tucker-eric/docusign-rest-client 1.0.0
tucker-eric/laravel-docusign 0.1.1

我试图用作曲家来更新软件包,认为它们可能已经进行了更新以解决问题,但是除了抛出USER_AUTHENTICATION_FAILED而不是上面的异常消息外,它没有做任何其他改变。

正如我所说,没有代码被触及,而且我对DocuSign API的经验很少,更糟糕的是,这是一个旧的开发人员的代码...

am 能够使用Postman到达终点并使用我们的凭据进行身份验证,并且看起来工作正常。再说一次,我不确定这是怎么开始的。

来自控制器的代码:

$parcel = request('parcel_id');
$subdivision = $user->subdivision_id;
$subEmail = Subdivision::where('id', $user->subdivision_id)->pluck('email')->first();

$move = Move::create([
    'full_name' => request('full_name'),
    'email' => request('email'),
    'phone_number' => request('phone_number'),
    'parcel_id' => $parcel,
    'direction' => request('direction'),
    'action_date' => request('action_date'),
    'user_id' => auth()->id(),
    'subdivision_id' => $subdivision
]);

$residentTabs = array(
    array(
        'tabLabel' => env('MOVE_IN_ADDRESS_FIELD'),
        'value' => $move->parcel->MailingAddress
    ),
    array(
        'tabLabel' => env('MOVE_IN_DATE_RESIDENT_FIELD'),
        'value' => $move->action_date->format('m/d/Y')
    ),
    array(
        'tabLabel' => env('MOVE_IN_EMAIL_FIELD'),
        'value' => $move->email
    ),
    array(
        'tabLabel' => env('MOVE_IN_PRIMARY_PHONE_FIELD'),
        'value' => $move->phone_number
    ),
    array(
        'tabLabel' => env('MOVE_IN_FULL_NAME_FIELD'),
        'value' => $move->full_name
    )
);

$pmTabs = array(
    array(
        'tabLabel' => env('MOVE_IN_PM_ADDRESS_FIELD'),
        'value' => $move->parcel->MailingAddress
    ),
    array(
        'tabLabel' => env('MOVE_IN_PM_DATE_FIELD'),
        'value' => $move->action_date->format('m/d/Y')
    ),
);

$templateRoles = array(
    array(
        'email' => $move->email,
        'name' => $move->full_name,
        'roleName' => 'Resident',
        'tabs' => array(
            'textTabs' => $residentTabs
        )
    ),
    array(
        'email' => $subEmail,
        'name' => $user->name,
        'roleName' => 'Property Manager',
        'tabs' => array(
            'textTabs' => $pmTabs
        )
    )
);

$envelopeDefinition = array(
    'status' => 'sent',
    'templateId' => env("DOCUSIGN_TEMPLATE_ID"),
    'templateRoles' => $templateRoles
);

$contract = DocuSign::get('envelopes')->createEnvelope($envelopeDefinition);

最后一行是引发异常的位置,引发异常的函数是:

vendor/docusign/esign-client/src/ApiClient.php::callApi

我们希望它可以正常工作,不引发任何异常并成功创建信封。 但是,我们一直看到USER_AUTHENTICATION_FAILED和常规401例外。

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

您的令牌可能已过期。不知道它是如何创建的以及正在使用的身份验证机制。您需要检查令牌和使用它的REST API调用中的标头在哪里。可能是经过硬编码的,或者是否有用于继续获取新令牌的刷新令牌,而该过程中断了。

答案 1 :(得分:0)

如果在尝试访问login_information端点时遇到身份验证失败,则可能是您的应用程序使用了带有无效密码的旧标题验证。 我建议以下内容:

  • 尝试登录www.docusign.net上的Web控制台,并在必要时执行密码重置
  • 一旦您能够登录,请更新应用程序中存储的凭据
  • 2FA或强制单点登录都将阻止旧版标头身份验证。如果任何一个都到位,则需要将其禁用,或者您需要切换到Account Server auth workflows之一。