1

我正在使用 HelloSign API 为 React Native 中的合同签署生成 web 视图。端点如下。

app.get('/api/contract/signcontract', Contract.viewAndSignContract);

这个端点在生成嵌入链接(与问题无关)后被命中,它呈现一个骨架 index.jade 并传递 hellosign.open 嵌入链接(URI 在传递到端点之前被编码,因此是解码)

exports.viewAndSignContract = function(req, res, next) {
  const embedLink = decodeURIComponent(req.query.url);
  res.render('index', {embedLink});
}

它使用 hellosign.open() 呈现 hellosign 嵌入式流。这方面你已经看到了,我相信它完全是股票代码。端点是通过 webview 上的源 url 命中的,这是 react-native 代码,但足以说明一切都很普通。

<WebViewBridge
          ref="webviewbridge"
          onBridgeMessage={this.onBridgeMessage.bind(this)}
          source={{ uri: `${ROOT_URL}/api/contract/signcontract?url=${encodeURIComponent(this.props.partner.embedLink)}` }}
          style={{ flex: 1 }}
 />

错误是几乎每次用户打开嵌入式流时,至少有 2 个获取请求:

第一个是偶尔的,不是每次。只是一个重定向。

"GET /api/contract/signcontract?url= HTTP/1.1" 304 - "-" "Mozilla/5.0 (iPhone; CPU iPhone OS 10_2 like Mac OS X) AppleWebKit/602.3.12 (KHTML, like Gecko) Mobile/14C89"

这两个是问题:

"GET /api/contract/signcontract?ux_version=2?parent_url=http%3A%2F%2Flocalhost%3A3000%2Fapi%2Fcontract%2Fsigncontract&skip_domain_verification=1&client_id=ID_HIDDEN&user_culture=en_US&debug=true&js_version=1.2.5 HTTP/1.1" 304 - "http://localhost:3000/api/contract/signcontract?url=" "Mozilla/5.0 (iPhone; CPU iPhone OS 10_2 like Mac OS X) AppleWebKit/602.3.12 (KHTML, like Gecko) Mobile/14C89"

这里真正的错误是/contract/undefined虽然我不明白为什么在访问一个网页时会有多个 GET 请求。

"GET /api/contract/undefined?ux_version=2&parent_url=http%3A%2F%2Flocalhost%3A3000%2Fapi%2Fcontract%2Fsigncontract&skip_domain_verification=1&client_id=ID_HIDDEN&user_culture=en_US&debug=true&js_version=1.2.5 HTTP/1.1" 404 262 "http://localhost:3000/api/contract/signcontract?ux_version=2?parent_url=http%3A%2F%2Flocalhost%3A3000%2Fapi%2Fcontract%2Fsigncontract&skip_domain_verification=1&client_id=ID_HIDDENc&user_culture=en_US&debug=true&js_version=1.2.5" "Mozilla/5.0 (iPhone; CPU iPhone OS 10_2 like Mac OS X) AppleWebKit/602.3.12 (KHTML, like Gecko) Mobile/14C89"

这些是本地终端日志,但是查看 Heroku 日志的情况相同。没有/contract/:params路线,所以我看不到/signcontract格式错误和undefined. 这些请求总是以完全相同的时间戳发生,一个并不总是在另一个之前发生,它们会翻转。我还想提一下,它不会破坏整个应用程序。

这两个 GET 请求总是存在,但在最坏的情况下,它会Cannot GET /api/contract/undefined?rest_of_params在 web 视图中短暂显示,然后重定向到真正的 hellosign 嵌入式流,一旦出现蓝月亮,它就不会重定向并停留在“CANNOT GET”屏幕上。这一切对我来说似乎非常违反直觉,我无法确定问题出在哪里。

4

1 回答 1

0

我希望你的问题已经得到解决。

但是,在查看此问题时,似乎在后端生成 sign_url 之前调用了要生成的 iFrame 的初始 API 调用。因此,在这种情况下进行了两次 GET 调用:一个没有 sign_url,一个有 sign_url。

  1. 生成请求
  2. 为各自的 signature_id 生成一个 sign_url
  3. 将 sign_url 传递给客户端以填充 iFrame

如前所述,联系 HelloSign 支持的最佳方式是直接联系我们的 API 团队。谢谢!

于 2020-05-11T17:48:31.247 回答