【问题标题】:Marketo REST API token keeps expiringMarketo REST API 令牌不断过期
【发布时间】:2021-01-11 00:39:46
【问题描述】:

我关注了 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 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"}

任何正确方向的帮助将不胜感激。提前致谢。

【问题讨论】:

  • Marketo REST API 令牌在生成后大约 15 分钟内到期,因此您需要重新请求令牌

标签: marketo


【解决方案1】:

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/

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      您需要使用以下序列。

      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>
      

      【讨论】:

      【解决方案4】:

      根据 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"
      

      您可以通过-v 标志获取有关 curl 发送内容的更多信息。运行它会为您提供足够的信息,至少可以知道您的整个 url 没有被传递给请求。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-01-04
        • 1970-01-01
        • 1970-01-01
        • 2012-02-09
        • 2017-08-06
        • 1970-01-01
        • 1970-01-01
        • 2017-01-17
        相关资源
        最近更新 更多