微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法将 Google Apps 脚本连接到 Plaid API

如何解决无法将 Google Apps 脚本连接到 Plaid API

团队怎么了,我正在尝试使用 Plaid 自动填充 Google 表格,其中包含在我的 Plaid 帐户中设置的财务报表。我最近看到一些公司收取费用(例如 https://www.budgetsheet.net/)这样做。几年前,我还看到开发人员完成了它(参见 https://github.com/hirefrank/plaid-txns-google-sheets)。这就是我想要做的,但 Plaid API 从那时起已经更新,不再使用公钥代替链接令牌:https://plaid.com/docs/link/link-token-migration-guide/

工作流程应该如下:

  1. 请求使用客户端 ID 和密钥创建链接令牌。
  2. 使用链接令牌打开链接。在 onSuccess 回调中,将临时 public_token 发送到您应用的服务器。
  3. 请求将 public_token 交换为永久 access_token,将 item_id 交换为新项目。
  4. 存储 access_token 并使用它为您用户的项目发出产品请求。

我可以通过以下调用创建 link_token(链接令牌位于 responseJSON.link_token):

/************************************************************************************
 * 
 * Creating function to get access token
 * 
 ************************************************************************************/

function getLinkToken(CLIENT_ID,SECRET) {
  
  // Specify headers
  var headers = {
    'Content-Type': 'application/json',};

  // Build data for link token
  var data = {
    'client_id': CLIENT_ID,'secret': SECRET,"client_name": "ryanmcslomo","products": ["auth",'transactions'],"language": "en","country_codes": ["US"],"user": {
      // "client_user_id": "unique-per-user","client_user_id": "ryanmcslomo",},};

  // Build params
  var parameters = {
    'headers': headers,'payload': JSON.stringify(data),'method': 'post','muteHttpExceptions': true,};

  // Call link token API with params
  var url = "https://development.plaid.com/link/token/create";
  var response = UrlFetchApp.fetch(url,parameters);
  var responseJSON = JSON.parse(response);

  //Return JSON containing Link Token
  return responseJSON;
}

但在那之后我不确定如何使用链接令牌初始化链接(更不用说获取公共令牌以交换访问令牌)。当我尝试将链接令牌作为公共令牌进行身份验证时,它(当然)失败了:

  // Build data for access token
  var data2 = {
    'client_id': CLIENT_ID,"public_token": responseJSON.link_token
  };

  // Build params
  var parameters2 = {
    'headers': headers,'payload': JSON.stringify(data2),};

  // Call API with params
  var url2 = "https://development.plaid.com/item/public_token/exchange";
  var response2 = UrlFetchApp.fetch(url2,parameters2);
  var response2JSON = JSON.parse(response2);

  // return JSON response with Link Token
  return response2JSON;
}

response2JSON:

{
display_message: null
documentation_url: "https://plaid.com/docs/?ref=error#invalid-input-errors"
error_code: "INVALID_PUBLIC_TOKEN"
error_message: 'provided token is the wrong type. expected "public",got "link"'
error_type: " INVALID_INPUT"
...
}

有什么想法吗?不确定如何作为 Google Apps 脚本执行此操作。感谢您的帮助!

我看过的其他地方:

解决方法

使用网络上的链接令牌初始化链接:

const handler = Plaid.create({
  token: 'GENERATED_LINK_TOKEN',onSuccess: (public_token,metadata) => {},onLoad: () => {},onExit: (err,onEvent: (eventName,receivedRedirectUri: null,});

触发对 /item/public_token/exchange 的调用:

  onSuccess: (public_token,metadata) => {
    fetch('//yourserver.com/get_access_token',{
      method: 'POST',body: {
        public_token: public_token,accounts: metadata.accounts,institution: metadata.institution,link_session_id: metadata.link_session_id,},});
  }
});

来源:https://plaid.com/docs/link/web/

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。