2

我按照Marketo 网站上的快速入门指南了解他们的 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 代币对话框

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

本指南提到从 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

4 回答 4

5

REST API 令牌过期。因此,您通常需要为每个会话请求一个令牌。

来自您安装的特定 URL,例如: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/

于 2015-06-09T17:44:53.833 回答
0

我无法弄清楚我的 curl 请求失败的原因,但我能够使用mrkt( Marketo的 Ruby Gem)成功调用 Marketo API。

我查看了 gem 为请求生成的日志,它们似乎完全相同。但至少我现在成功地调用了 Marketo。

于 2015-05-28T15:19:00.597 回答
0

根据 Marketo 的文档,您的第一次通话失败,因为您的令牌目前每小时到期一次。

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

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

您可以获得有关 curl 使用-v标志发送的更多信息。运行它会给你足够的信息,至少知道你的整个 url 没有被传递给请求。

curl -v https://ABC-DEF-123.mktorest.com/identity/oauth/token?grant_type=client_credentials&client_id=ACLIENTID&client_secret=ACLIENTSECRET
于 2018-09-19T20:48:43.173 回答
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>
于 2016-12-15T22:20:02.803 回答