【问题标题】:DocuSign demo account envelopes list_status_changes returning USER_AUTHENTICATION_FAILEDDocuSign 演示帐户信封 list_status_changes 返回 USER_AUTHENTICATION_FAILED
【发布时间】:2019-12-14 19:18:38
【问题描述】:

使用DocuSign python SDK在沙箱环境中获取应用JWT令牌,然后列出信封的状态变化。 API 调用响应为 400 Bad Request: USER_AUTHENTICATION_FAILED。

我已经为第一次 JWT 令牌请求完成了一次性访问授权(使用 APIClient.get_authorization_uri)。

APIClient.request_jwt_application_token 生成有效令牌(使用 jwt.io 和公钥/私钥检查)

配置/参数:

我搜索过类似的问题。当他们提到生产环境时,解决方案是调整baseURL的子域(na,eu等)。不过,这对于演示环境来说应该不是问题。

API 客户端:

api_client = ds.ApiClient(oauth_host_name='account-d.docusign.com')

OAuth 网址:

oauth_login_url = api_client.get_authorization_uri(dict_secrets['DSIntegratorKey'],
                                                   scopes=['signature impersonation'],
                                                   redirect_uri='https://www.docusign.com/api',
                                                   response_type='code')

JWT 令牌请求:

api_client.request_jwt_application_token(client_id=dict_secrets['DSIntegratorKey'], expires_in=3600,
                                         oauth_host_name=api_client.get_oauth_host_name(),
                                         private_key_bytes=dict_secrets['DSPrivateKey'].encode('utf-8'))
ds.configuration.api_client = api_client

麻烦线:

envelopes_api = ds.EnvelopesApi()
envelopes_information = envelopes_api.list_status_changes(dict_secrets['DSAccountID'],
                                                          from_date=last_run_str, status='completed')

错误:

Traceback (most recent call last):
  File "<input>", line 1, in <module>
  File "AppData\Local\Programs\Python\Python36\lib\site-packages\docusign_esign\apis\envelopes_api.py", line 6884, in list_status_changes
    (data) = self.list_status_changes_with_http_info(account_id, **kwargs)
  File "AppData\Local\Programs\Python\Python36\lib\site-packages\docusign_esign\apis\envelopes_api.py", line 7001, in list_status_changes_with_http_info
    collection_formats=collection_formats)
  File "AppData\Local\Programs\Python\Python36\lib\site-packages\docusign_esign\client\api_client.py", line 354, in call_api
    _return_http_data_only, collection_formats, _preload_content, _request_timeout)
  File "AppData\Local\Programs\Python\Python36\lib\site-packages\docusign_esign\client\api_client.py", line 170, in __call_api
    _request_timeout=_request_timeout)
  File "AppData\Local\Programs\Python\Python36\lib\site-packages\docusign_esign\client\api_client.py", line 377, in request
    headers=headers)
  File "AppData\Local\Programs\Python\Python36\lib\site-packages\docusign_esign\client\api_response.py", line 200, in GET
    query_params=query_params)
  File "AppData\Local\Programs\Python\Python36\lib\site-packages\docusign_esign\client\api_response.py", line 191, in request
    raise ApiException(http_resp=r)
docusign_esign.client.api_exception.ApiException: (400)
Reason: Bad Request
HTTP response headers: HTTPHeaderDict({'Cache-Control': 'no-cache', 'Content-Length': '132', 'Content-Type': 'application/json; charset=utf-8', 'X-DocuSign-TraceToken': '27b02745-8b7a-49e5-8657-f12a8eca6efe', 'Date': 'Tue, 06 Aug 2019 14:42:50 GMT', 'Vary': 'Accept-Encoding'})
HTTP response body: b'{\r\n  "errorCode": "USER_AUTHENTICATION_FAILED",\r\n  "message": "One or both of Username and Password are invalid. invalid_request"\r\n}'

【问题讨论】:

    标签: python-3.x docusignapi


    【解决方案1】:

    您的重定向网址看起来不正确。 一方面,重定向 url 应该是您自己的应用程序 url,而不是 DocuSign。 您在那里的那个网址 (https://www.docusign.com/api) 对我来说也无效。请再次检查。

    【讨论】:

    • 重定向 URI 是在 DocuSign 帐户的管理员中的集成密钥上设置的。它曾经与以前版本的 SDK 一起工作。你能给我一个指向应用程序的 URL 示例吗?我不确定我是否理解。
    • 如果您在本地机器上工作,如果您的应用程序在那里运行,示例可能是 localhost:8080。它可以是任何 url,但不会是 docusign url,因为您的应用程序未托管在 docusign.com
    • 我尝试使用与管理面板中指定的 URL 不同的 URL,但出现错误。您还有其他想法吗?
    • 当我在浏览器中打开 auth url 时,我得到“请求提供的重定向 URI 不在此客户端应用程序配置的有效 URI 列表中”
    • 您必须返回开发人员沙箱,进入管理员,找到密钥页面并将此 url 添加到您的集成密钥
    【解决方案2】:

    在与 DocuSign 进行支持电话后,发现 api_client 和信封_api 的某些属性未正确设置。解决方案是明确设置它们:

    • api_client.set_base_path('https://demo.docusign.net/restapi')
    • envelopes_api = ds.EnvelopesApi(api_client)
    • envelopes_api.api_client.host = 'https://demo.docusign.net/restapi' - 这不是从 api_client 传递到信封 API,因此调用将用于 prod 而不是 demo
    • 或者,在实例化 api_client 时设置主机:api_client = ds.ApiClient(host='https://demo.docusign.net/restapi')

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-06-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多