【问题标题】:API returning a USER_LACKS_MEMBERSHIP errorAPI 返回 USER_LACKS_MEMBERSHIP 错误
【发布时间】:2019-10-04 22:46:37
【问题描述】:

我已经与 DocuSign 构建了一个基于 API 的集成(使用他们的 PHP SDK),现在正准备部署到生产服务器。我已经使用生产集成密钥、公钥/私钥对、用户和帐户 ID、端点 URL 等重新配置了所有内容,替换了演示版本。对话的 OAuth 部分工作正常,我得到了一个有效的令牌。然后,当我尝试发送信封时,遇到了 USER_LACKS_MEMBERSHIP 错误,并且无法弄清楚原因。据我所知,在演示系统和生产系统之间,关于 API 用户的一切都是一样的。

我有 authorized the application 并确保它在“有权访问 DocuSign 的应用程序”列表中。

我有 enabled logging,但其中显示的唯一内容似乎来自我自己在网站中的导航,与 API 调用完全无关。

我可以找到的大部分文档都只是重复一般错误文本:“用户 ID 在此帐户中没有有效的成员资格。”如果我去帐户管理员并查看用户列表,我期望的用户列表就在那里,具有 DS 管理员权限;不知道还能做些什么来给他们“会员资格”。有人提到不使用 SendOnBehalfOf,但我没有,所以我不能真正删除它。

所有代码都是相同的,只是配置发生了变化。不知道还能去哪里看。有人对尝试什么有什么建议吗?

更多信息

我已经在 SDK 中尝试了 getUserInfo 调用,传递了我用于其他调用的相同访问令牌。它成功返回,表明它是为我期望的用户,在我们拥有的一个组中,在生产服务器上。然而,当我再次启用日志记录时,作为同一用户,任何此 API 活动的结果日志中仍然有零记录。

尝试使用 SDK 执行列表模板之类的操作失败,并出现相同的 USER_LACKS_MEMBERSHIP 错误。

使用诊断 API(再次通过 SDK)检查日志记录状态显示它未启用(尽管我在 UI 中启用了它),但可以通过单独的调用启用。随后尝试在 SDK 中使用 listRequestLogs 会生成 404 错误,尽管 URL 与 API 文档 (/v2/diagnostics/request_logs) 中列出的内容相匹配。不确定这些发现是否证实我以某种方式使用不同的用户登录 API 和 UI(即使用户名和内部 ID 匹配),或者 DocuSign 中的日志记录工具存在问题。

【问题讨论】:

    标签: docusignapi


    【解决方案1】:

    问题出在我用于 API 调用的 URL 上。我从测试中的demo.docusign.net 切换到现场的www.docusign.net,但是在加拿大我们需要使用ca.docusign.net。对于以后发现此问题的人,您可以从 oauth/userinfo 端点或通过 SDK 的 getUserInfo() 调用获取正确的基本路径(至少是 PHP SDK;不知道类似的调用会是什么)其他)。

    【讨论】:

    • 是的,就像我说的,在演示和产品之间需要更改的五件事(有时是六件事)之一。
    • 我已将其更改为有效的。只是对我们的帐户无效。 :-(
    【解决方案2】:

    有 3 件事需要考虑:

    1. API 调用在 URL 中包含帐户 #(GUID 或短格式)的端点 (URL)。记下网址中的那个数字。
    2. Auth Token 是特定帐户中特定用户的令牌。
    3. 特定呼叫的用户 ID。那是帐户中的特定用户。

    如果用户不在帐户中,或者 #1 和 #2 不匹配 - 您将收到此错误。您必须使用单个帐户并在所有地方都拥有该帐户,并且用户必须是该帐户的成员。

    【讨论】:

    • 谢谢!我们只有一个帐户,其中有两个用户。两个用户都有管理员权限。所以我看不出任何一个用户如何成为该帐户的成员。我已经从“API 和密钥”页面复制了用户 ID 和帐户 ID,将演示站点中同一页面的工作值替换为生产中的相应值。
    • 啊哈,演示和生产。你用的是哪一个?您不能交换演示和生产帐户。您必须更改所有内容,包括 url、数字,包括令牌和密钥以及 RSA 私钥。 demo和prod之间有6个不同的地方。你把它们都改成正确的值了吗?
    • 所有内容都包含在原帖中,我想。我会稍微编辑一下以强调这一点。正如我所说,整个 OAuth 过程运行良好,我从生产中获得了一个有效的令牌。当我调用 API 来发送一个信封时,就会发生错误。
    • 是的,API 调用使用的是 url。请在该网址中提供帐号
    • 是的,帐号在网址中,是我们生产帐号的帐号。当我将演示 URL 与我们的演示帐号一起使用时,它可以正常工作。当我将生产 URL 与我们的生产帐号一起使用时,它会失败。
    【解决方案3】:

    回复:

    我已启用日志记录,但其中显示的唯一内容似乎来自我自己在网站中的导航,与 API 调用完全无关。

    由于请求日志没有显示您的 API 活动,问题是您在网络工具上登录的人与您在您的设备上登录的人(用户 ID)不同应用。

    OAuth 授权码身份验证解决方案:仔细检查当您的应用登录 DocuSign 时,您使用的是 account.docusign.com 身份验证服务器,而不是 account-d.docusign.com 身份验证服务器。 (在登录过程中查看浏览器中的 URL。)

    OAuth JWT 身份验证的解决方案:重新检查模拟的用户 ID 是否来自生产系统,并且您使用的是正确的身份验证服务器

    【讨论】:

    • 确认 OAuth 正在使用 account.docusign.com 登录。我们用于登录的详细信息来自生产站点上的“API 和密钥”页面,所以肯定如果其中任何一个不正确,登录将失败。
    • 在问题中添加了关于确认正确登录和缺少日志记录的进一步结果的其他详细信息。
    猜你喜欢
    • 1970-01-01
    • 2021-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-25
    • 2014-09-29
    • 2015-10-01
    相关资源
    最近更新 更多