如何解决无法将 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/
工作流程应该如下:
- 请求使用客户端 ID 和密钥创建链接令牌。
- 使用链接令牌打开链接。在 onSuccess 回调中,将临时 public_token 发送到您应用的服务器。
- 请求将 public_token 交换为永久 access_token,将 item_id 交换为新项目。
- 存储 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 脚本执行此操作。感谢您的帮助!
我看过的其他地方:
- 条纹集成
- 在 React 中实现
- 令牌文档
- GitHub 上的 SDK
解决方法
使用网络上的链接令牌初始化链接:
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,},});
}
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。