如何在SalesForce之外访问富文本字段图像?

时间:2018-07-02 20:09:43

标签: node.js oauth salesforce sf

我正在使用SalesForce对象存储用户信息,它也包含个人资料图像。通过发送Base64字符串和<img>标签,我可以在Rich Text Field中插入图像。图像将存储并显示在SalesForce页面中。没问题。

我还可以在Rest API(NodeJS)的帮助下将图像URL获取到客户端(移动应用程序)。这里的问题是,只有登录了SalesForce帐户,图像URL才可以访问(浏览器)。进入。否则进入SalesForce登录页面(当我尝试使用其他浏览器时)。

我想要在没有SalesForce登录访问权限的移动应用程序中显示图像。但是如果需要,我可以向客户端提供足够的信息。

我的图片网址看起来像这样,

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

此外,我在服务器端(节点)中有一些安全信息,这些信息是我成功登录SalesForce时获得的。顺便说一句,我正在使用 node-salesforce 包建立SalesForce连接。

1)OrganizationId

2)instanceUrl

3)用户ID

4)accessToken

从一个星期前开始,我就一直困扰着这个问题,而我的期限已满。 请帮助!

谢谢!

1 个答案:

答案 0 :(得分:0)

当我从api返回时,我最终以实时格式重写了富文本格式的URL。在某种程度上,它们可以通过集成用户https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/resources_sobject_rich_text_image_retrieve.htm

引用我的api,我通过该SF API端点用作图像代理。
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());
}

远离理想,但它可以工作!