我正在使用InfusionSoft的leagacy xml-rpc API来更新联系人的一些联系方式,如电子邮件和选择退出原因等。
我正在使用谷歌应用程序脚本来实现这一点,因为带有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());
}
感谢。
答案 0 :(得分:1)
在处理旧版身份验证时,有一个不同的请求URL可以连接到API。
您引用的网址:
var url = "https://api.infusionsoft.com/crm/xmlrpc/v1?access_token=" + INF_TOKEN;
用于通过OAuth访问API。
将旧版API与Infusionsoft API密钥一起使用时,您应该调用以下网址:
var url = "https://APPNAME.infusionsoft.com:443/api/xmlrpc";
其中APPNAME是您帐户的Infusionsoft应用程序名称(子域名)。
Infusionsoft API密钥不会过期(但可能会根据需要由Infusionsoft内部的用户进行更改。)
关于OAuth流程,这里有更多信息。
访问令牌每24小时到期一次。
该过程将为您提供两个令牌。
刷新令牌有效期为90天,用于生成访问令牌。
Infusionsoft刚刚宣布刷新令牌将每90天到期,这意味着如果您想跳过手动授权重置令牌,则必须更频繁地刷新脚本。
访问令牌有效期为24小时,用于进行API调用。
所以整个过程是: