Недостаточно прав при попытке показа фотографий пользователей на внешних сайтах - PullRequest
2 голосов
/ 04 августа 2020

У меня такая ситуация. Я пытаюсь отобразить фотографии пользователей с внешнего сайта, все настройки удаленных сайтов уже установлены. Я создал связанное приложение в организации A, а из организации B я получаю пользователей из организации A.

Все это работает, однако я не могу показать фотографии этих пользователей, потому что для этого я должен быть могу использовать метод ConnectApi.UserProfiles.GetPhoto, который я делаю прямо сейчас, но продолжаю получать ошибку «недостаточно прав». Я попытался получить AccessToken через почтальона, например enter image description here

This redirects me to the login site so i can log into my org with my credentials. After that i get an AccessToken.

Next up, i want to be able to get the photos from users from the external site with the AccessToken, However i'm still getting the same error message "Insufficient Priviledges". Am i missing something? thanks in advance

According to: https://sforcenotes.blogspot.com/2015/10/solution-to-display-salesforce-user.html?showComment=1596211057195#c5848226245946017759 Решение довольно простое, но не работает

1 Ответ

0 голосов
/ 05 августа 2020

Я немного потерялся. У вас есть приложение, которое хочет войти в 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»

enter image description here

So another GET with same header and I have my ugly mug:

enter image description here

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) ​​

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