Я немного потерялся. У вас есть приложение, которое хочет войти в Salesforce и получить из него изображения? Или вы хотите позвонить из Salesforce и получить изображения из внешнего приложения? Для первого вам, вероятно, понадобится «связанное приложение». Но вам нужны «настройки удаленного сайта» или «именованные учетные данные» только для вызова.
Я предполагаю, что это вариант 1.
Есть много способов войти в SF, SOAP API (только имя пользователя + пароль), REST API (множество параметров OAuth2, с именем пользователя + пароль или имя пользователя + JWT или просто идентификатор клиента OAuth2 и пользователь входит в SF в интерактивном режиме, вы не видите пароль) ... Похоже, вы прошли этот этап?
Успешный ответ на вход будет выглядеть примерно так (в зависимости от используемого метода):
{"id":"https://login.salesforce.com/id/00Dx0000000BV7z/005x00000012Q9P",
"issued_at":"1278448832702",
"instance_url":"https://yourInstance.salesforce.com/",
"signature":"0CmxinZir53Yex7nE0TD+zMpvIWYGb/bdJh6XfOH6EQ=",
"access_token":"00Dx0000000BV7z!AR8AQAxo9UfVkh8AlV0Gomt9Czx9LjHnSSpwBMmbRcgKFmxOtvxjTrKW19ye6PE3Ds1eQz3z8jr3W7_VbWmEu4Q8TVGSTHxs",
"token_type":"Bearer"}
Вы должны взять из этого access_token
(это ваш идентификатор сеанса. Он всегда будет начинаться с идентификатора организации, сравните с «Настройка» -> «Информация о компании») и instance_url
(именно сюда вы должны отправлять любые последующие запросы. Больше никаких вызовов шлюзов входа в систему: вход в систему .salesforce.com, test.salesforce.com или mydomain.my.salesforce.com). Если вы получаете сообщение «Недостаточные привилегии», я думаю, вы не изменили конечную точку.
Вы можете проверить, что вы вошли в систему, отправив GET
на полученную id
конечную точку. Он предоставит вам информацию OpenId о вашем пользователе.
Вот мой GET для получения данных OpenId с запросом «Authorization: Bearer»
So another GET with same header and I have my ugly mug:
If you want somebody else's picture - query similar to /services/data/v48.0/query?q=SELECT SmallPhotoUrl, FullPhotoUrl FROM User WHERE Id = '005...'
should work. Check User поля.
{
"totalSize" : 1,
"done" : true,
"records" : [ {
"attributes" : {
"type" : "User",
"url" : "/services/data/v48.0/sobjects/User/(redacted)"
},
"SmallPhotoUrl" : "https://(redacted)/profilephoto/7293L0000008Tfq/T",
"FullPhotoUrl" : "https://(redacted)/profilephoto/7293L0000008Tfq/F"
} ]
}
Ключевым моментом является использование новой конечной точки и передача идентификатора сеанса в заголовке. Возможно, вам даже будет проще использовать Chatter API для извлечения фотографий (также на основе REST)