Javascript 无法将Google Apps脚本连接到Plaid API
团队好,我正在尝试使用Plaid自动填充一个Google表单,在我的Plaid帐户中设置财务报表。我最近看到一些公司收费(例如:)来做这件事。几年前,我还看到开发人员完成了这项工作(请参阅)。这就是我想要做的,但是Plaid API从那时起已经更新,以删除公钥,而不是链接令牌: 工作流程应如下所示:Javascript 无法将Google Apps脚本连接到Plaid API,javascript,api,google-apps-script,google-sheets,plaid,Javascript,Api,Google Apps Script,Google Sheets,Plaid,团队好,我正在尝试使用Plaid自动填充一个Google表单,在我的Plaid帐户中设置财务报表。我最近看到一些公司收费(例如:)来做这件事。几年前,我还看到开发人员完成了这项工作(请参阅)。这就是我想要做的,但是Plaid API从那时起已经更新,以删除公钥,而不是链接令牌: 工作流程应如下所示: 请求使用客户端ID和密码创建链接令牌 使用链接令牌打开链接。在onSuccess回调中,将临时公共_令牌发送到应用程序的服务器 请求将公共\u令牌交换为新项目的永久访问\u令牌和项目\u id 存储
{
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"
...
}
有什么想法吗?不知道如何作为谷歌应用程序脚本做到这一点。谢谢你的帮助
我看过的其他地方:
- 条带集成
- 在反应中做这件事
- 代币单据
- GitHub上的SDK
const handler = Plaid.create({
token: 'GENERATED_LINK_TOKEN',
onSuccess: (public_token, metadata) => {},
onLoad: () => {},
onExit: (err, metadata) => {},
onEvent: (eventName, metadata) => {},
receivedRedirectUri: null,
});
触发对/item/public\u令牌/交换的调用:
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,
},
});
}
});
来源:当使用请求的每个值都可以被认为是有效值时,我认为您的两个谷歌应用程序请求脚本都是正确的。例如,从错误消息中,确认从第一个请求中检索到的
“public_token”:responseJSON.link_token
是否可用于使用https://development.plaid.com/item/public_token/exchange
,又是吗?很抱歉,我无法提出明确的解决方案。你好@Tanaike,我很高兴你看到了我的问题!我是你的超级粉丝,我关注你的博客,从你的教导中学到了很多东西。谢谢你所做的一切!回到问题,哈哈,看起来link_令牌不是的有效输入。Plaid的工作流说使用这样的脚本来“初始化”带有Link_标记的链接:(CTRL+F“Quickstart Link”以查看其节点和javascript示例)。我很困惑如何在谷歌应用程序脚本中做到这一点。谢谢你的回复。我不得不为我糟糕的英语水平道歉。不幸的是,从你的回复中,我不确定我是否能正确理解你当前的问题。我为此道歉。例如,当您想要将Quickstart Link
的Javascript转换为Google Apps脚本时,示例脚本似乎使用了Javascript库。所以我认为有必要对图书馆进行分析。这个怎么样?
const handler = Plaid.create({
token: 'GENERATED_LINK_TOKEN',
onSuccess: (public_token, metadata) => {},
onLoad: () => {},
onExit: (err, metadata) => {},
onEvent: (eventName, metadata) => {},
receivedRedirectUri: null,
});
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,
},
});
}
});