ошибка остальных торговых агентов INVALID_SESSION_ID - PullRequest
5 голосов
/ 23 мая 2011

Я использую salesforce rest api для доступа к учетной записи salesforce из моего приложения rails. Я создал приложение удаленного доступа и получил ключ N id. Я смог аутентифицировать пользователя и получить auth_token, URL-адрес экземпляра и все такое. Но когда я отправляю запрос в "instance_url / services / data / v20.0" вместе с токеном доступа, я получаю эту ошибку:

[{"message":"Session expired or invalid","errorCode":"INVALID_SESSION_ID"}]

У меня есть учетная запись разработчика Salesforce, и для каждого профиля включен API-интерфейс true, за исключением профиля "Аутентифицированный веб-сайт" (который недоступен).

Пожалуйста, кто-нибудь может мне помочь с этим?

Я аутентифицирую пользователя с помощью следующего запроса

HTTParty.post "login.salesforce.com/services/oauth2/token";, :body=>{"grant_type"=>"authorization_code","code"=>"abc}","client_secret"=>"abc"‌​, "client_id"=>"abc","format"=>"json","redirect_uri"=>"localhost:3000/salesforce/callback";}

, который возвращает подпись, id, instance_url ,.Did_at, access_token и refresh_token

HTTParty.get "ap1.salesforce.com/services/data/v20.0";, :headers=>{"Authentication"=>"OAuth access_token", "Content-Type"=>"application/json"}

, который отвечает

[{"errorCode"=>"INVALID_SESSION_ID", "message"=>"Session expired or invalid"}]

Ответы [ 7 ]

9 голосов
/ 23 мая 2011

Как вы передаете sessionId в запрос /services/data/v20.0 ?, если ваш access_token равен abc123, тогда вам нужен заголовок http Authorization: OAuth abc123 в запросе.

2 голосов
/ 23 мая 2011

Сеанс API в Salesforce истекает независимо от того, есть ли действия или нет.для установки продолжительности каждого сеанса перейдите к Настройка> Настройка администрирования> Элементы управления безопасностью> Настройки сеанса>

максимум 8 часов.

ура!

0 голосов
/ 03 мая 2019

В дополнение к другим возможным проблемам, указанным в других ответах, настройка Lock sessions to the IP address from which they originated в Salesforce является возможным фактором, способствующим действительному в противном случае коду.С следующая статья Salesforce KB :

Описание
Когда включена функция «Блокировать сеансы с IP-адресом, с которого они исходили», еслиТокен доступа OAuth2 используется для выполнения вызова API Salesforce REST, INVALID_SESSION_ID может быть возвращен, даже если токен получен в той же транзакции Apex.

Resolution
"Блокировать сеансы для«IP-адрес, с которого они произошли», является строгим, и внутренние IP-адреса в этом случае не заносятся в белый список автоматически.Поскольку вызов входа в систему и последующие вызовы API REST могут выполняться через разные внутренние IP-адреса, INVALID_SESSION_ID может быть возвращен при использовании токена доступа, если упомянутое предпочтение включено.

Чтобы решить эту проблему, вы можете использовать непрерывное применение IPфункция (появилась летом 15 года):

  1. Включить «Блокировать сеансы на IP-адрес, с которого они произошли» «OFF,
  2. Включить« Принудительное использование диапазонов IP-адресов при каждом запросе »ON,
  3. Выберите политику ослабления IP подключенного приложения «Принудительное ограничение IP» и
  4. Добавьте внутренний диапазон IP-адресов Salesforce с 10.0.0.0 по 10.255.255.255 в список профилей, для которых необходимо использовать REST API Salesforce..

или просто ослабьте ограничения IP:

  1. Отключите «Блокировать сеансы для IP-адреса, с которого они исходили», и
  2. ВыберитеПолитика релаксации IP подключенного приложения «Ограничения IP-адресов»
0 голосов
/ 12 августа 2016

Я добавляю этот ответ, потому что мне помог любой другой ответ выше. На самом деле моя проблема заключалась в том, что я использовал access_token , как я получил его в ответе JSON во время login.salesforce.com / services / oauth2 / token запросов.

Необходимо удалить идентификатор из access_token , как описано в документации по SalesForce: «Заменить идентификатор на значение токена»

0 голосов
/ 15 июля 2016

Столкнулся с той же проблемой, и в моем случае < > символов в пароле вызывали проблему.

0 голосов
/ 19 декабря 2013

Проблемы, с которыми я столкнулся:

0 голосов
/ 24 мая 2011

Если вы используете Oauth, вам нужно использовать поток обновлений токена, чтобы получить новый обновленный токен при этой ошибке.Вот более подробная информация: http://wiki.developerforce.com/index.php/Digging_Deeper_into_OAuth_2.0_on_Force.com

Поищите "обновить токен" в ссылке на странице WIKI выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...