Как получить доступ к изображению поля Rich Text за пределами SalesForce?

Я использую объект SalesForce для хранения информации о пользователе, он также включает изображение профиля. Я могу вставлять изображения в поле Rich Text, отправляя строку Base64 вместе с тегом <img>. Изображение сохраняется и отображается на странице SalesForce. Нет проблем с этим.

Также я могу получить URL-адрес изображения на стороне клиента (мобильное приложение) с помощью Rest API (NodeJS). Проблема здесь в том, что URL-адрес изображения доступен (браузер) только в том случае, если учетная запись SalesForce зарегистрирована. Если в противном случае он переходит на страницу входа в систему SalesForce (когда я пытаюсь использовать другой браузер).

Я хочу отображать изображения в моем мобильном приложении, у которого нет доступа для входа в систему SalesForce. Но я могу предоставить достаточно информации на стороне клиента, если это необходимо.

URL-адрес моего изображения выглядит так:

https://c.ap5.content.force.com/servlet/rtaImage?eid=a037F00000YSybT&feoid=00N7F00000Pupl6&refid=0EM7F000000lIN0

Кроме того, у меня есть некоторая информация о безопасности на стороне моего сервера (узла), которую я получил, когда успешно вошел в систему SalesForce. Кстати, я использую пакет node-salesforce для установки соединения SalesForce.

1) идентификатор организации

2) URL-адрес экземпляра

3) идентификатор пользователя

4) токен доступа

Я застрял с этой проблемой за неделю до этого, и у меня истекает крайний срок. Пожалуйста, ПОМОГИТЕ!!!

Спасибо!


person JefinOJ    schedule 02.07.2018    source источник
comment
Удалось ли вам найти ответ? Я ищу подобное решение.   -  person RDoonds    schedule 21.08.2018
comment
Извините за задержку с ответом. Да, я смог найти решение. Я получил поддержку от эксперта по научной фантастике. Существует способ создать собственный домен в SF и сопоставить его с URL-адресом. URL-адрес, сгенерированный SF, не будет доступен снаружи без входа в систему. Но использование собственного домена сделает его доступным. Я сделал свою работу.   -  person JefinOJ    schedule 28.09.2018
comment
Привет JefinOJ. Не могли бы вы добавить подробности о том, как вы это сделали, пожалуйста?   -  person jjblanco    schedule 14.07.2020


Ответы (1)


Я закончил тем, что переписал URL-адреса в расширенном тексте на лету, возвращая их из моего API. Таким образом, чтобы они ссылались на мой API, который я использую в качестве прокси-сервера изображения через эту конечную точку SF API с пользователем интеграции: https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/resources_sobject_rich_text_image_retrieve.htm

private void rewriteImageUrls(RichTextRecord richTextRecord) {
    Document doc = Jsoup.parse(richTextRecord.getBody());
    doc.select("img").forEach(imgElement -> {
        try {
            URL originalUrl = new URL(imgElement.absUrl("src"));
            String newUrl = appEnv.getBackendUrl() + "/api/v1/rich_text_records/" + richTextRecord.getSfid() + "/image?refid="+ UrlUtils.getQueryMap(originalUrl.getQuery()).get("refid");
            imgElement.attr("src", newUrl);
        } catch (MalformedURLException e) {
            e.printStackTrace();
        }
    });

    richTextRecord.setBody(doc.outerHtml());
}

Далеко от идеала, но это работает!

person quintencls    schedule 25.11.2020