【问题标题】:Why is the Plaid.create func not returning any output?为什么 Plaid.create 函数不返回任何输出?
【发布时间】:2021-07-30 19:54:00
【问题描述】:

我正在使用 Flask 尝试获取 Plaid Link 以供我的用户登录。

我试图弄清楚为什么我看不到从按钮单击时调用的Plaid.create 函数输出的控制台日志。调试起来很困难,因为它没有给我太多的输出。

这是我的简单html页面

<!DOCTYPE html>
<html lang="en">

<head>
  <title>Index</title>
  
  <script src="https://cdn.plaid.com/link/v2/stable/link-initialize.js"></script>
  <script>
    async function login()
    {
      console.log("Initiating login!")
      const response = await fetch("/create_link_token") # Call to endpoint implemented in Flask
      const {link_token} = await response.json()
      console.log(link_token)
      console.log("before the link handler")
      const handler = Plaid.create
      ({
        token: await link_token,
        onSuccess: async (public_token, metadata) => {
          console.log(public_token);
          console.log(metadata);
          console.log("/token_exchange/"+public_token)
          token = await fetch("/token_exchange/"+public_token)
          console.log(token)
        },
        onExit: (err, metadata) => {
          console.log(err);
          console.log(metadata)
        },
        onEvent: (eventName, metadata) => {
          console.log(eventName);
          console.log(metadata);
        },
      });
      console.log("Done!")
    }
  </script>
</head>

  <body>
    <h1 style="color: blue">Hello, World!</h1>
    <p>This is an HTML file served up by Flask</p>
    <form>
      <input type="button" onclick="login()" value="Login" />
  </form>
  </body>

</html>

这是控制台输出

Initiating login! 
link-development-24e61667-d41f-4ca3-b936-b7b995054646
before the link handler
Done!

所以在我看来,创建功能没有完成或静默失败,因为据我所知,我应该让格子链接出现以继续身份验证流程。然而,它似乎并没有持续到获取我的路线甚至点击任何其他回调的地步。

感谢您提供的任何帮助和说明。如果我对 JS 有任何误解,请告诉我。

【问题讨论】:

    标签: javascript python flask plaid


    【解决方案1】:

    link_token 只是一个字符串,而不是一个承诺,所以它不需要是awaited。同样,onSuccess 的回调签名定义为onSuccess: function (publicToken, metadata),它需要保持这种状态才能工作。

    这里有一些可以正常工作的简单代码,如果它有帮助的话:

    <!DOCHTML html>
    <html>
    <head>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
        <script src="https://cdn.plaid.com/link/v2/stable/link-initialize.js"></script>
    
    <title> Plaid demo app</title>
    
    </head>
    
    <body>
      <button id="link-button">Link account</button>
    
      <script>
    
      async function createPlaid() {
    
        const linkToken = await $.get('/create-link-token');
    
        const handler = Plaid.create({
          token: linkToken,
          onSuccess: function (publicToken, metadata) {
            fetch('/exchange-token', {
              method: 'POST',
              body: JSON.stringify({ publicToken}),
              headers: {
                'Content-Type': 'application/json',
              }
            });
          }
      })
    
      $("#link-button").on("click", function (e) {
        handler.open();
      })
    }
    
    createPlaid();
    
      </script>
    </body>
    </html>
    

    【讨论】:

      猜你喜欢
      • 2015-08-26
      • 1970-01-01
      • 2017-08-09
      • 2020-09-28
      • 1970-01-01
      • 1970-01-01
      • 2023-02-07
      • 1970-01-01
      相关资源
      最近更新 更多