我正在使用Infusionsoft的fiegacy XML-RPC API,只需更新电子邮件和退出原因等联系人的一些联系方式。
我正在使用Google Apps脚本来实现这一目标,因为可以在此处提供具有联系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。
与infusionsoft API密钥一起使用旧式API时,您应该拨打以下URL:
var url = "https://APPNAME.infusionsoft.com:443/api/xmlrpc";
where appName是您帐户的infusionsoft应用程序名称(子域(。
infusionsoft API密钥不会过期(但是Infusionsoft内部的用户可能会更改它(。
关于OAuth流,这里有更多信息。
访问令牌每24小时到期。
该过程将为您提供两个令牌。
刷新令牌活了90天,用于生成访问令牌。
infusionsoft刚刚宣布,刷新令牌将每90天到期,这意味着如果您想跳过手动授权来重置令牌。
,您必须更频繁地刷新脚本。访问令牌生活24小时,用于拨打API。
所以总体过程是:
- 用户必须授予初始许可。(用户实际上将登录并确认许可。(
- 您的脚本应安全地存储"长期"(也许在数据库中(的刷新令牌,并存储/缓存访问令牌"短期"/即时(也许在会话中(使用。
- 在访问令牌到期之前,您的脚本将需要使用刷新令牌调用InfuSionsoft,而InfuSionSoft将使用新的刷新令牌和新的访问令牌进行响应。拨打此通话后,旧的刷新令牌和访问令牌都变得无效,无法再次使用。
- 从步骤2重复。