Skip to main content
Question

{"errorCode":"USER_AUTHENTICATION_FAILED","message":"One or both of Username and Password are invalid. Invalid access token"}'

  • November 13, 2024
  • 3 replies
  • 246 views

Forum|alt.badge.img+1

 

user_data = {
            "name": user_smartreq.user_id.first_name,
            "address": "Your Address",
        }
        html_content = render_to_string("offer.html", user_data)
        pdf_file_path = "/tmp/document.pdf"
        HTML(string=html_content).write_pdf(pdf_file_path)

        # Step 2: Set up DocuSign API Client
        api_client = ApiClient()
        api_client.set_oauth_host_name("account-d.docusign.com")
        api_client.set_base_path("https://demo.docusign.net")

        response = api_client.request_jwt_user_token(
            client_id=env.DOCUSIGN_INTEGRATION_KEY,
            user_id=env.DOCUSIGN_USER_ID,
            oauth_host_name="account-d.docusign.com",
            private_key_bytes=docusign.PRIVATE_KEY,
            expires_in=100000,
            scopes=["signature", "impersonation", "extended", "openid", "cors"],
        )
        # api_client.set_access_token(response)
        print(response.access_token)
        api_client.set_default_header(
            header_name="Authorization", header_value=f"Bearer {response.access_token}"
        )
        api_client.set_base_path("https://demo.docusign.net")

        print(str(api_client.get_user_info(response.access_token).accounts[0].base_uri))
        # Step 3: Prepare the PDF document for DocuSign
        with open(pdf_file_path, "rb") as file:
            document_base64 = file.read().decode("latin1")

        document = Document(
            document_base64=document_base64,
            name="Sample Document",
            file_extension="pdf",
            document_id="1",
        )

        # Step 4: Set up signer and signature tab
        signer = Signer(
            email="parthpatel1470@gmail.com",
            name="Recipient Name",
            recipient_id="1",
            routing_order="1",
        )

        sign_here = SignHere(
            document_id="1", page_number="1", x_position="100", y_position="150"
        )

        signer.tabs = {"sign_here_tabs": [sign_here]}
        recipients = Recipients(signers=[signer])

        # Step 5: Create the envelope definition
        envelope_definition = EnvelopeDefinition(
            email_subject="Please sign this document",
            documents=[document],
            recipients=recipients,
            status="sent",
        )

        try:
            # Step 6: Send the envelope via DocuSign API
            envelopes_api = EnvelopesApi(api_client)
            # print(envelopes_api.list_status(account_id=env.DOCUSIGN_API_ACCOUNT_ID))
            result = envelopes_api.create_envelope(
                env.DOCUSIGN_API_ACCOUNT_ID, envelope_definition=envelope_definition
            )
            print(result)
        except ApiException as e:
            print("I htrewq anas erefaehjlealk  pleas elook ")
            print(e)

I not able to use the envelope client I checked in the admin console and the user has all access to everything still I am not above to run this code

3 replies

Forum|alt.badge.img+2
  • Newcomer
  • 4 replies
  • November 15, 2024

Hey @Parth, I recently faced the same issue, and you can resolve it by using the SDK method to generate an access token with the code obtained from OAuth. Here’s an example:

public function getAccessToken(string $code)
{
    return $this->apiClient->generateAccessToken($this->clientId, $this->clientSecret, $code);
}


Forum|alt.badge.img+3
  • Docusign Employee
  • 21 replies
  • November 18, 2024

Hi Parth,

  1. Go to your account profile page.
  2. In the left-hand menu, select Privacy & Security and verify your credentials.
  3. Scroll down to the App Passwords section under Additional Security and click GENERATE APP PASSWORD.

Additionally, the organization admin can set the user's login policy to either Identity Provider or Username/Password.

This error typically points to an issue with how authentication credentials are managed or transmitted in the API request.

Make sure the token used in the API call has the appropriate permissions or scope for the requested operation.

Keep in mind that tokens can expire, and if the token is nearing its expiration, it might fail right before the API call is made.

 

Best,

Dev/API Team


Forum|alt.badge.img+1
  • Newcomer
  • 1 reply
  • November 19, 2024

Hi ​@Parth -

I just had a very similar problem - using JWT, based my application (I thought) on the Python quickstart app.  Access token was created successfully, got user / account info using it, but got the same USER_AUTHENTICATION_FAILED error as you when trying to actually do anything with any API.

For me, the problem was that api_client.host somehow was being set to 'https://www.docusign.net/restapi', instead of 'https://demo.docusign.net/restapi'.  Since my application is not authorized to work in the production environment (for good reason!), the authentication failed.

So, check the value of your api_client.host, and if it’s pointing to the wrong environment, try changing it with something like:

api_client.host = base_path # or whatever is correct for you

The sneaky line in the quickstart project which does this:

https://github.com/docusign/code-examples-python/blob/master/app/jwt_helpers/jwt_helper.py#L36

Though I see it is documented in https://developers.docusign.com/docs/esign-rest-api/sdks/python/auth/ - so not so sneaky after all.

 

Hope this helps! --Andy