Marketo REST API令牌保持过期

时间:2015-05-18 13:35:52

标签: marketo

我在Marketo的网站上关注了Quick Start Guide的REST API。这很顺利。我能够从他们的网站获得成功的回复。

请求:

curl https://ABC-DEF-123.mktorest.com/rest/v1/lists.json?access_token=123:ab

响应:

{"requestId":"123#abcf7aff","result":[],"success":true}

然而,当我第二天尝试相同的请求时,我收到了:

{"requestId":"123#abc6731ab6f","success":false,"errors":[{"code":"601","message":"Access token invalid"}]}

我登录了Marketo管理员,发现我从对话框中复制并粘贴的令牌不同。我尝试了这个新的,它起作用了。

(这取自指南)

Marketo Token Dialog

我在他们的网站上遇到了另一个描述不同身份验证过程的指南。 Marketo Authentication Guide

本指南提到从API端点返回的令牌已过期,因此我怀疑所有Marketo令牌都已过期(或者我需要禁用此功能)。但是,我无法使用我的客户端ID和客户端密钥成功向此端点发出请求。

请求:

curl https://ABC-DEF-123.mktorest.com/identity/oauth/token?grant_type=client_credentials&client_id=ACLIENTID&client_secret=ACLIENTSECRET

响应:

{"error":"unauthorized","error_description":"An Authentication object was not found in the SecurityContext"}

任何正确方向的帮助都将受到赞赏。提前谢谢。

4 个答案:

答案 0 :(得分: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"
}

您需要使用此请求开始会话以进行后续调用。我的代码首先运行,然后在它到期时请求新的令牌。 expires_in字段以秒为单位。

来源:http://developers.marketo.com/documentation/rest/authentication/

答案 1 :(得分:0)

我无法弄清楚为什么我的curl请求失败了,但我能够成功调用Marketo API和mrkt,这是一个Ruby Gem for Marketo。

我查看了宝石为请求生成的内容的日志,它们看起来完全相同。但至少我现在成功地打电话给Marketo。

答案 2 :(得分:0)

您需要使用以下序列。

grant_type=  client_credentials
client_id =you will get Marketo admin where you generate token
client_secret=you will get Marketo admin where you generate token
Content-Type: application/x-www-form-urlencoded;charset=UTF-8



GET <Identity URL>/oauth/token?grant_type=client_credentials&client_id=<Client Id>&client_secret=<Client Secret>

答案 3 :(得分:0)

根据Marketo的文档,您的第一次呼叫失败,因为您的令牌当前每小时都过期。

您的curl调用获取新令牌失败,因为curl(或其他东西)剥离了auth参数。尝试将网址用引号引起来。

curl "https://ABC-DEF-123.mktorest.com/identity/oauth/token?grant_type=client_credentials&client_id=ACLIENTID&client_secret=ACLIENTSECRET"

您可以使用-v标志来获取有关卷曲发送内容的更多信息。运行该命令将为您提供足够的信息,至少可以知道您没有将整个URL传递给请求。

curl -v https://ABC-DEF-123.mktorest.com/identity/oauth/token?grant_type=client_credentials&client_id=ACLIENTID&client_secret=ACLIENTSECRET