我按照Marketo网站上的" 快速入门指南"了解他们的REST API.这很顺利.我能够从他们的网站获得成功的回复.
请求:
curl https://ABC-DEF-123.mktorest.com/rest/v1/lists.json?access_token=123:ab
Run Code Online (Sandbox Code Playgroud)
响应:
{"requestId":"123#abcf7aff","result":[],"success":true}
Run Code Online (Sandbox Code Playgroud)
但是,当我第二天尝试同样的请求时,我收到了:
{"requestId":"123#abc6731ab6f","success":false,"errors":[{"code":"601","message":"Access token invalid"}]}
Run Code Online (Sandbox Code Playgroud)
我登录到Marketo管理员,发现我从对话框中复制并粘贴的令牌不同.我尝试了这个新的,它工作.
(这取自指南)

我在他们的网站上遇到了另一个描述不同身份验证过程的指南.Marketo身份验证指南
本指南提到从API端点返回的令牌已过期,因此我怀疑所有Marketo令牌都会过期(或者我需要禁用此功能).但是,我无法使用我的客户端ID和客户端密钥成功向此端点发出请求.
请求:
curl https://ABC-DEF-123.mktorest.com/identity/oauth/token?grant_type=client_credentials&client_id=ACLIENTID&client_secret=ACLIENTSECRET
Run Code Online (Sandbox Code Playgroud)
响应:
{"error":"unauthorized","error_description":"An Authentication object was not found in the SecurityContext"}
Run Code Online (Sandbox Code Playgroud)
任何正确方向的帮助将不胜感激.提前致谢.
小智 5
REST API令牌过期.因此,您通常需要为每个会话请求令牌.
来自您特定的已安装网址,例如:MARKETOURL/identity/oauth/tokengrant_type = client_credentials&client_id = abc&client_secret = xyz
这会导致(例子):
{
"access_token": "1234",
"token_type": "bearer",
"expires_in": 3599,
"scope": "email@email.com"
}
Run Code Online (Sandbox Code Playgroud)
您需要使用此请求开始会话以进行后续调用.我的代码首先运行,然后在它到期时请求新的令牌.expires_in字段以秒为单位.
资料来源:http://developers.marketo.com/documentation/rest/authentication/