PARTNER_AUTHENTICATION_FAILED после успешного получения токена доступа с использованием JWT - PullRequest
0 голосов
/ 16 мая 2019
  1. Я пытаюсь установить соединение между моим приложением и DocuSign Sandbox.

  2. Я использую авторизацию JWT.

  3. У меня есть ключ интеграции с сгенерированным закрытым ключом RSA.
  4. У меня есть пользователь, чтобы выдать себя за GUID и получить согласие
  5. Я звоню https://account -d.docusign.com / oauth / token с правильными данными, которые отвечают успешно и возвращают мне токен доступа

До этого момента все работает хорошо.

Я скачал библиотеку для PHP "docusign / esign-client"

и использовал этот фрагмент кода:

        $recipientId = uniqid(5);
        $clientUserId =  uniqid(5);

        $document = new Document([
            'document_base64' => $base64FileContent,
            'name' => 'Application Form',
            'file_extension' => 'pdf',
            'document_id' => '1'
        ]);

        $signer = new Signer([
            'email' => $email,
            'name' => $name,
            'recipient_id' => $recipientId,
            'routing_order' => "1",
            'client_user_id' => $clientUserId,
        ]);

        $signHere = new SignHere([
            'document_id' => '1', 'page_number' => '3', 'recipient_id' => $recipientId,
            'tab_label' => 'SignHereTab', 'x_position' => '195', 'y_position' => '147'
        ]);

        $signer->setTabs(new Tabs(['sign_here_tabs' => [$signHere]]));

        $envelopeDefinition = new EnvelopeDefinition([
            'email_subject' => "Please sign this document",
            'documents' => [$document],
            'recipients' => new Recipients(['signers' => [$signer]]),
            'status' => "sent"
        ]);

        $config = new Configuration();
        $config->setHost('https://demo.docusign.net/restapi');
        $config->addDefaultHeader("Authorization", "Bearer " . $accessToken);
        $config->setAccessToken($accessToken);

        $apiClient = new ApiClient($config);
        $envelopeApi = new EnvelopesApi($apiClient);

        $results = $envelopeApi->createEnvelope($integrationKey, $envelopeDefinition);  

В результате возникает ошибка (400) из API с информацией:

PARTNER_AUTHENTICATION_FAILED
The specified Integrator Key was not found or is disabled. Invalid account specified for user.

В нем говорится, что ключ интеграции неверен, но за несколько строк до того, как я использовал этот ключ интеграции для успешного создания токена доступа.

У вас есть идеи, что происходит не так?

До интеграции в JWT я использовал другой ключ интеграции и токен доступа из OAuth Token Generator, и он работал нормально (этот предыдущий ключ не был сгенерирован RSA)

Не могли бы вы, ребята, помочь мне с этим вопросом?

Если какая-либо дополнительная информация поможет найти решение, просто дайте мне знать, и я обновлю свой пост.

Спасибо за помощь.

1 Ответ

2 голосов
/ 16 мая 2019

Проблема в этой строке

 $results = $envelopeApi->createEnvelope($integrationKey, $envelopeDefinition);

Первым параметром метода createEnvelope должен быть идентификатор учетной записи, а не ключ интегратора.

После получения токена доступа выможет сделать UserInfo вызов и извлечь из этого идентификатор учетной записи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...