Срок действия токена Marketo REST API продолжает истекать

Я следовал Краткому Стартовое руководство на сайте 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 и заметил, что токен, который я скопировал и вставил из диалогового окна, был другим. Я попробовал этот новый, и это сработало.

(Это взято из руководства)

Диалоговое окно Marketto Token

Я наткнулся на другое руководство на их сайте, в котором описывается другой процесс аутентификации. Руководство по аутентификации Marketo

В этом руководстве упоминается, что токен, который возвращается из конечной точки API, имеет срок действия, поэтому я подозреваю, что срок действия всех токенов Marketo истекает (или мне нужно отключить это). Однако мне не удалось успешно выполнить запросы к этой конечной точке с моим идентификатором клиента и секретом клиента.

Запрос:

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"}

Любая помощь в правильном направлении будет оценена по достоинству. Заранее спасибо.


person kcdragon    schedule 18.05.2015    source источник
comment
Срок действия токенов Marketo REST API истекает примерно через 15 минут после создания, поэтому вам нужно будет повторно запросить токен.   -  person Offbeatmammal    schedule 01.09.2015


Ответы (4)


Токены 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 protected]"
}

Вам нужно будет начинать свои сеансы с этого запроса, чтобы делать последующие вызовы. У меня есть код, который сначала запускает это, а затем запрашивает новый токен, если срок его действия истекает. Поле expires_in указывается в секундах.

Источник: http://developers.marketo.com/documentation/rest/authentication/

person michael running wolf    schedule 09.06.2015

Я не мог понять, почему мои запросы на завивание не работали, но я смог успешно вызвать Marketo API с помощью mrkt, Ruby Gem для Marketo.

Я просмотрел журналы того, что драгоценный камень генерирует для запросов, и они кажутся точно такими же. Но, по крайней мере, я сейчас успешно звоню Marketo.

person kcdragon    schedule 28.05.2015

Вам нужно использовать следующие последовательности.

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>
person vaquar khan    schedule 15.12.2016
comment
Лучше добавить контекст/объяснение вокруг кода (а не просто ответ только для кода), так как это делает ответ более полезным. - person EJoshuaS - Reinstate Monica; 16.12.2016

Согласно документам Marketo, ваш первый вызов не удался, потому что срок действия вашего токена в настоящее время истекает каждый час.

Ваш вызов curl для получения нового токена не удался, потому что curl (или что-то в этом роде) удалял аргументы аутентификации. Попробуйте заключить адрес в кавычки.

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
person steel    schedule 19.09.2018