При нажатии https://login.salesforce.com/services/oauth2/токен с помощью Postman.
ПОСТ https://login.salesforce.com/services/oauth2/токен
Ответ:
Я получаю токен, но когда я пытаюсь сделать что-то простое, например GET /limits,
ПОЛУЧИТЬ https://na73.salesforce.com/services/data/v45.0/limits
ответ:
[
{
"message": "Session expired or invalid",
"errorCode": "INVALID_SESSION_ID"
}
]
Странно то, что когда я меняю все свои учетные данные на бесплатную «учетную запись разработчика», созданную с другим адресом электронной почты, все работает нормально. Все запросы и заголовки одинаковы, за исключением значений из любой учетной записи.
После изучения множества тем здесь я подумал, что, возможно, моя производственная учетная запись (та, которую я публикую сейчас) не была ВКЛЮЧЕНА API. Оказывается, в моей производственной учетной записи API ВКЛЮЧЕН.
Я также попытался изменить https://login.salesforce.com/services/oauth2/токен на https://na73.salesforce.com/services/oauth2/токен, как предлагалось в некоторых потоках, но это просто истекло.
При сравнении разрешений обеих учетных записей они кажутся идентичными, и я подтвердил, что у меня нет проблем с учетными данными (идентификатор клиента, секрет клиента, токен безопасности, токен доступа), все они, похоже, скопированы правильно.
Есть идеи для нуба отдела продаж?
@eyescream обновлено
instance_url вам ответили "na73", вы отправили GET на "mi73". Опечатка здесь, в stackoverflow или действительно в Postman? В остальном все выглядит хорошо
@eyescream тоже нет, я просто набрал mi для своего экземпляра
Здесь заканчиваются идеи. Если вы вошли в систему, все должно «просто работать». Попробуйте ПОЛУЧИТЬ URL-адрес, который вы получили в ответе на вход в систему под параметром id, он должен вернуть некоторую информацию о вашем собственном пользователе. Попробуйте другой URL, например /services/data/v45.0/query?q=SELECT+id,name+FROM+user+LIMIT+5. Попробуйте в другом приложении, например workbench.developerforce.com -> утилиты -> обозреватель REST? Может быть, что-то в Postman неправильно передает переменные / искажает идентификатор сеанса (может быть, ненужное urlencoding?)
Я согласен, это должно «просто работать», но это не так. Я ПОЛУЧАЮ https://login.salesforce.com/id/00D1I000000kiBrUAI/0051I000004VGU1QAO, и он возвращает некоторую информацию о моей учетной записи. Сомневаюсь, что это почтальон. Как я упоминал в посте, это прекрасно работает с другой бесплатной учетной записью «разработчика». Когда я пытаюсь нажать {{instance-url}}/services/data/v45.0/query?q=SELECT+id,name+FROM+user+LIMIT+5, как было предложено, я все равно получаю INVALID_SESSION_ID. Workbench вроде работает, а через Postman ничего. POS



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


После борьбы с этим в течение нескольких дней я исключил, что это проблема с Почтальоном. Какой мусор. Просто следуйте https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/quickstart_code.htm и вместо этого используйте команды curl. Если я скопирую необработанную команду curl в почтальон, а затем запущу, она по-прежнему будет давать сбой с INVALID_SESSION_ID, но отлично работает в ZSH.
Вот вам и полезный графический интерфейс
Вы пробовали решение @Apocawaka для изменения настроек Postman? Это решилось для меня после внесения Follow Authorization Header изменения
Я на самом деле исправил это после того, как навсегда ударился головой об это. Вам нужно перейти на вкладку настроек и включить параметр Follow Authorization Header.
Следуйте настройкам заголовка авторизации
учитывая, что вопрос касается Почтальона, ваш скриншот помог. Замена Follow Authorization Header на on решила проблему. Сэкономил мне кучу времени.
ОТЛИЧНЫЙ !! СПАСИБО @Apocawaka !! Трачу много времени с этим вопросом о БОЖЕ кк. спасибо
Вот оно. ?
У меня была такая же проблема, и хотя это наполовину решило проблему для меня, это было неправильно. Например. при создании записи с использованием этого метода она фактически не создавала запись. Однако это дало мне подсказку - и если я отключил «Автоматически следовать перенаправлениям» в Postman, то «Местоположение» в заголовке ответа сообщило мне, каким было мое доменное имя должен. Исправление этого в моем первоначальном запросе устранило проблему. Параметр «Следовать за заголовком аутентификации» больше не требуется и может использовать значения по умолчанию Postman, и он также успешно создал запись.
Просто хотел отметить, что когда я использовал «токен носителя» и кнопку «использовать токен» Postman, он вставил id_token в заголовок авторизации. Убедитесь, что вы передаете токен доступа.
Я здесь, в 2021 году, и для меня решением было не «Следовать за заголовком авторизации», а токен доступа имел другой instance_url, чем ожидалось. Используйте это значение instance_url в _endpoint, и все в порядке.
У меня была такая же проблема, даже при активации Follow Authorization Header
По сути, носитель авторизации не устанавливается напрямую, поэтому я добавил его на вкладке Pre-request script.
pm.request.headers.add({key: 'Authorization', value: 'Bearer {{_accessToken}}' });
Теперь работает как шарм.
Отредактируйте вопрос и опубликуйте весь запрос «GET limit». Я имею в виду особенно HTTP-заголовок «Авторизация», я хочу видеть там «Bearer sessionidgoeshere» (вы можете обрезать/запутать идентификатор, если вы параноик). «/limits» не является правильной конечной точкой, это будет что-то вроде «/services/data/v45.0/limits», если только вы не набрали его здесь в спешке. Использование My Domain вместо login.salesforce.com имеет значение только при входе в систему. Кроме того, вы должны использовать конечную точку (и идентификатор сеанса), которые были возвращены вам при входе в систему.