【问题标题】:InfusionSoft legacy xml-rpc API access token expiring frequentlyInfusionSoft 旧版 xml-rpc API 访问令牌频繁过期
【发布时间】:2017-05-02 14:00:56
【问题描述】:

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

我正在使用谷歌应用程序脚本来实现这一点,因为带有联系人 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());
}

谢谢。

【问题讨论】:

    标签: api google-apps-script access-token xml-rpc infusionsoft


    【解决方案1】:

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

    您引用的网址:

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

    用于通过 OAuth 访问 API。

    在使用带有 Infusionsoft API 密钥的旧版 API 时,您应该调用以下 URL:

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

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

    Infusionsoft API 密钥不会过期(但可以由 Infusionsoft 内部的用户按需更改)。

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

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

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

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

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

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

    所以整体流程是:

    1. 用户必须授予初始权限。 (用户将实际登录并确认权限。)
    2. 您的脚本应该安全地存储刷新令牌以供“长期”(可能在数据库中)使用,并存储/缓存访问令牌以供“短期”/即时(可能在会话中)使用。
    3. 在访问令牌过期之前,您的脚本需要使用刷新令牌调用 Infusionsoft,Infusionsoft 将使用新的刷新令牌和新的访问令牌进行响应。一旦您进行此调用,OLD 刷新令牌和访问令牌都将变为无效且无法再次使用。
    4. 从第 2 步开始重复。

    【讨论】:

    • 感谢您对此进行澄清。可能是我在最初的问题中不清楚,或者我现在不清楚你在说什么,1.你描述的过程不是关于 oauth 工作流程吗? 2. 我正在使用遗留 API(在主题中提到),其中 api 密钥 + 令牌是从他们的网站生成并用于对 API 的调用(就像大量 API 的情况一样)。他们的开发者网站/前端是否提供了任何刷新令牌数据?
    • @FiTeach 我错过了遗留部分。我会更新答案。
    • 它似乎有效。非常感谢。我一定是从他们的文档中弄糊涂了。
    猜你喜欢
    • 1970-01-01
    • 2016-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多