【问题标题】:How to get Typeform response in node js app?如何在节点 js 应用程序中获得 Typeform 响应?
【发布时间】:2021-04-18 07:45:50
【问题描述】:

我正在尝试在 nodejs 应用程序中实现 Typeform。要获得 typeform 响应,我需要调用 https://api.typeform.com/oauth/authorize?client_id={your_client_id}&redirect_uri=https://results-example.herokuapp.com/callback&scope={scope1}+{scope2}+{scope3} 并继续显示同意屏幕,其中列出了我的应用程序的访问范围,并提示他们授予或拒绝对我的应用程序的访问权限。接受 url 更改为重定向 url 并在 url 查询中给出代码后。 但是当我在我的节点应用程序中使用请求模块调用这个 typeform api 时,它不会继续到同意屏幕。 那么如何绕过 nodejs 应用中的同意屏幕或获取我需要的代码呢?

这里是代码sn-p

app.get('/typeform', (req, res) => {
  request('https://admin.typeform.com/oauth/authorize?client_id="client_id"&redirect_uri="hosturl/typeform"&scope=responses:read+responses:write', function (error, response, body) {
if(!error){
    console.log(response, Body);
    }
  });
})

【问题讨论】:

    标签: node.js express hapijs typeform


    【解决方案1】:

    看起来您正在处理 oAuth。

    如果您需要代表某人访问 typeform 响应,oAuth 很有用。通过 oAuth,他们将授予您访问其帐户的权限。类似于您在互联网上随处可见的所有“使用 facebook/google 签名”按钮。

    如果您需要访问您自己的 Typeform 帐户的响应,您可能不需要经历这个麻烦,您只需在您的帐户设置中创建一个个人令牌并直接拨打Responses API

    如果您想继续 oauth 路由,这是一个两步过程,如 Typeform Documentation 中所述。

    1. 首先,您将用户重定向到https://api.typeform.com/oauth/authorize...
    2. 用户看到您描述的屏幕并授权您的应用访问他们的帐户。
    3. 然后它们被重定向到您定义为redirect_uri 的URL。在那里您需要提取从请求中传递的code 查询参数。
    4. 您将此代码交换为access_token,这将帮助您代表用户调用Typeform API。为此,您需要使用所有参数对 https://api.typeform.com/oauth/token 进行 API 调用。
    5. 如果一切顺利,您应该返回一个带有access_token 的 JSON,您现在可以使用它来调用 Responses API。

    有意义吗?

    如果您使用的是 Node.js,您可以使用一个名为 Passport 的库,它可以为您处理大部分此类舞蹈。 Here 是一个关于如何将它与 Typeform 一起使用的示例。 而here就是一个例子,不用它,直接调用。

    最后,如果您不熟悉 oAuth,我建议您阅读 Anabella Spinelli 的 this one 之类的文章,这些文章分解了概念。

    【讨论】:

    • OP 公式中的关键错误是对授权 URL 执行request,而不是将用户重定向到授权 URL(Express 中的res.redirect())。除了像 Passport.js 这样的开源库之外,还有与 Typeform 一起使用的托管 OAuth 服务,比如 Xkit's Typeform connector 这是我的日常工作。
    • 在第 4 点,您需要对 https://api.typeform.com/oauth/token 进行 HTTP 调用,如下所述:developer.typeform.com/get-started/applications/… 将此代码交换为 access_token 后,您可以对 Typeform API 进行经过身份验证的调用。
    • 我有密码。现在我调用api.typeform.com/oauth/token 以使用post 调用获取access_token,请求正文包含授权类型、代码、client_id、client_secret 和redirect_uri,与文档developer.typeform.com/get-started/applications 中提到的完全相同。但我收到此错误 { code: 'bad_request', description: 'Bad request', help: 'developers.typeform.com/get-started/authentication' }
    • 此时可能值得直接联系 typeform 支持,以便他们更好地帮助您。
    猜你喜欢
    • 2015-10-25
    • 2017-09-24
    • 2017-09-24
    • 2020-10-02
    • 2022-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-13
    相关资源
    最近更新 更多