InfusionSoft legacy xml-rpc API 访问令牌经常过期

InfusionSoft legacy xml-rpc API access token expiring frequently

我正在使用 InfusionSoft 的遗留 xml-rpc API 来更新联系人的一些详细联系信息,例如电子邮件和退出原因等。

我正在使用 google 应用程序脚本来实现这一点,因为带有 contact-id 的数据在列表中可用。不过,它是从其他来源检索这些联系人的更大项目的一部分。

我经常看到我收到响应 401(未授权)消息以响应发出的请求。它需要重新生成访问令牌才能通过这些请求。

有什么办法可以让令牌永不过期或有最长时限吗?因为客户端需要经常重新生成令牌以更新该数据。

该脚本需要每天 运行 为列表中所有可用的新联系人执行,并且不涉及其他用户。

目前,我正在分享检索联系人详细信息的示例代码,并且在同一天生成新令牌时工作正常。

function infusionTry()
{
  var KEY = APIKEY;
  var INF_TOKEN = ACCESS_TOKEN;
  var url = "https://api.infusionsoft.com/crm/xmlrpc/v1?access_token=" + INF_TOKEN;
  var payload = HtmlService.createTemplateFromFile("ReqData").getRawContent();
  payload = payload.replace("{privateKey}",KEY);
  payload = payload.replace("{contactIDNumber}",666486);
  var params = {
    method: "post",
    contentType : "application/xml",
    payload : payload,    
    muteHttpExceptions: true
  };
  var resp = UrlFetchApp.fetch(url, params);
  Logger.log(resp.getResponseCode());
  Logger.log(resp.getContentText());
}

谢谢。

处理旧版身份验证时,有一个不同的请求 URL 连接到 API。

您引用的URL:

var url = "https://api.infusionsoft.com/crm/xmlrpc/v1?access_token=" + INF_TOKEN;

用于通过 OAuth 访问 API。

在将旧版 API 与 Infusionsoft API Key 一起使用时,您应该调用以下 URL:

var url = "https://APPNAME.infusionsoft.com:443/api/xmlrpc";

其中 APPNAME 是您帐户的 Infusionsoft 应用程序名称(子域)。

Infusionsoft API 密钥不会过期(但 Infusionsoft 内部的用户可能会根据需要更改它)。

关于 OAuth 流程,这里有更多信息。

访问令牌每 24 小时过期一次。

该过程将为您提供两个令牌。

刷新令牌 有效期为 90 天,用于生成访问令牌。

Infusionsoft 刚刚宣布刷新令牌将每 90 天过期一次,这意味着如果您想跳过手动授权以重置令牌,则必须比这更频繁地刷新脚本。

访问令牌 有效期为 24 小时,用于进行 API 调用。

所以整体流程是:

  1. 用户必须给予初始许可。 (用户将实际登录并确认权限。)
  2. 您的脚本应该安全地存储 "long term" 的刷新令牌(可能在数据库中)和 store/cache "short term"/立即(可能在会话中)使用的访问令牌.
  3. 在访问令牌过期之前,您的脚本需要使用刷新令牌调用 Infusionsoft,Infusionsoft 将使用新的刷新令牌和新的访问令牌进行响应。进行此调用后,旧的刷新令牌和访问令牌都将失效,无法再次使用。
  4. 从第 2 步开始重复。