- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想将 Salesforce VisualForce 页面变成我公司网站的小部件。我想使用服务器端代码和服务帐户访问小部件。我将在我的网页中缓存、设置样式并输出小部件 html。我知道我可以使用服务器端代码和几个 API 调用来重现小部件,但我喜欢能够在 Salesforce 中管理小部件并让小部件可在 Salesforce 中的其他地方重用的想法。
在这种情况下,小部件将报告我们在 Salesforce 中跟踪的竞赛中的当前领导者。我计划将这种方法重用于其他“小型报告小部件”。这是一个非常有用的模式。我敢肯定有人已经优雅地解决了它。到目前为止,我的搜索都是空的。
我试图避免使用站点,因为访问我们公司网站的用户在 Salesforce 中没有用户帐户(现在我正在考虑允许匿名访问的站点)。
我的第一次尝试看起来像这样(受 SSO 到自助服务门户的启发):
var ws = new sfapi.SforceService();
var lr = ws.login(Secrets.salesforce_user_name, Secrets.salesforce_password);
string url = "https://na6.salesforce.com/apex/mywidget?sessionId=" + lr.sessionId;
我也尝试过 ?sid 和 ?csssid,但像这样的网址只会让我跳转到 Salesforce 登录页面:
https://na6.salesforce.com/apex/mywidget?sessionId=00D3000000myorg!my-session-id-from-logging-in-with-the-api-8_i2fX_9wnYdwnwatGVuX6jGjmVmnv50j78yfGF1aKHdoDFtIx_J9
我可以使用标准的屏幕抓取技术使用用户名和密码发布到标准的 Salesforce 登录表单,然后拉出/apex/mywidget 页面。但这感觉很笨拙且不受支持。
现在我正在考虑创建一个可公开访问的新站点,以公开我的小部件。至少我可以放心地筛选那个页面。
感谢任何帮助。我现在打算使用匿名网站方法。
最佳答案
将数据渲染到 Visualforce 页面中,然后进行屏幕截图看起来有点脆弱,更不用说效率低下 - 有更好的方法...
定义 Apex REST Web 服务,然后您可以轻松地从服务器端代码调用该 Web 服务,如果需要,仍然可以在 Visualforce 中呈现它 - 您可以像调用任何其他 Apex 方法一样调用 Apex REST 方法。
这是一个示例 REST Web 服务。我只是返回一个 Map<String,String>
在这里,但是您可以返回任何原始类型、任何 sObject 或原始或 sObject 的 List 或 Map(只要 Map 具有 String 键) - 参见 the Apex REST Web Services docs
@RestResource(urlMapping='/MyResource/*')
global with sharing class MyRestResource {
@HttpGet
global static Map<String,String> getResource() {
Map<String,String> result = new Map<String,String>();
result.put('key1', 'value1');
result.put('key2', 'value2');
return result;
}
}
这里有一些 PHP 调用它(我假设你有一个访问 token (又名 session ID)和实例 URL):
$url = "$instance_url/services/apexrest/MyResource";
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HTTPHEADER,
array("Authorization: OAuth $access_token",
"Content-type: application/json"));
$json_response = curl_exec($curl);
$status = curl_getinfo($curl, CURLINFO_HTTP_CODE);
if ( $status != 200 ) {
die("Error: call to URL $url failed with status $status, ".
"response $json_response\n");
}
$response = json_decode($json_response, true);
echo "The service says ".$response['key1'].' '.$response['key2']."\n";
curl_close($curl);
如果你想显示相同的数据,这里有一个 Visualforce 页面
<apex:page controller="TestRestController">
<p>Controller says {!result}</p>
</apex:page>
页面 Controller :
public class TestRestController {
public String getResult() {
Map<String, String> result = MyRestResource.getResource();
return result.get('key1') + ' ' + result.get('key2');
}
}
关于screen-scraping - 将 Salesforce VisualForce 页面视为外部小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7841998/
我从下面的代码行收到错误“错误错误:AddIMRConroller 编译错误:字段表达式的初始术语必须是具体的 SObject:第 21 行第 23 列的列表”。 string[] str1 = im
Salesforce 支持不同的沙箱。 例如“部分”或“开发”沙箱。 有没有办法检测我的脚本连接到哪种沙箱? 我使用 Python 和 simple_salesforce。 最佳答案 我的 Pytho
下面一行在 salesforce 中给出了“FIELD_INTEGRITY_EXCEPTION”。请为此提供替代方案。 imr.Assigned_DTM__c = DateTime.valueOfGm
下面一行在 salesforce 中给出了“FIELD_INTEGRITY_EXCEPTION”。请为此提供替代方案。 imr.Assigned_DTM__c = DateTime.valueOfGm
我正在尝试实现批处理。我需要一些关于如何测试的帮助/指导。我在这里所做的只是在调试日志中显示机会名称。但是当我在 Apex 测试执行中运行 scheduleBatchable 类时,它也有测试类。未显
我在 salesforce 中创建了一个包,它将使用用户的电子邮件 ID 发出 http 标注请求以获取该电子邮件的数据并将数据添加到某个自定义对象。但是当我尝试使用 UserInfo.getUser
我正在尝试将 Salesforce 数据加载到 Python 数据框中,以便我们可以在那里进行所有操作。 simple_salesforce 处理了我们达到 2,000 限制的警告: from sim
我在 Salesforce 托管包中编写了一个 Apex 类,它使用 apex-lang 的托管版本。库包: global class MySorter implements al.Objectcom
我已经开始使用现有的应用程序,并且代码的唯一副本在 SalesForce 中。我如何备份(导出)它,以便在我弄得一团糟时可以回滚到这个原始代码? 最佳答案 有几个选项可以备份或添加版本控制到您的 Sa
Salesforce 向我抛出了一条新的错误消息,到目前为止我还没有在文档中找到任何有用的信息。我试图在 Controller 扩展中保存一个对象,它实际上保存了记录,但它没有返回到我指示的页面,而是
我需要防止输入重复名称。需要使用触发器来施加此限制。我想知道如何限制 DML 操作的发生。不确定 .addError 在批量代码中的用法。 Set Seta= new Set(); for(oj_
我正在尝试通过创建一个触发器来解决基于“邮箱已满”的邮件退回问题,该触发器在邮件包含“邮箱已满”时重新发送邮件。 我面临的问题是我需要将重新发送的次数限制为 3 次。 一旦收到退回的电子邮件,我现在就
salesforce.com 中单个自定义对象中的最大记录数是多少? https://login.salesforce.com/help/doc/en/limits.htm 中似乎没有指出限制 当然,
是否可以为具有配置文件的用户使用共享规则。如果用户有配置文件,它们有什么用吗?或者配置文件是否完全覆盖了记录访问权限,这样我就可以忘记共享规则? 我的情况是我的所有用户都有个人资料。我想做的是将某些记
自从我不得不进行 S2S 集成以来,已经发布了几个版本,但我遇到了一个意想不到的问题,希望有人能更有效地解决这个问题。 我有两个组织,通过 S2S 共享联系人。 每个组织中的联系人都具有相同的架构,即
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 想改进这个问题?将问题更新为 on-topic对于堆栈溢出。 去年关闭。 社区在 3 个月前审查了是否重新
我正在查看SOQL文档,但找不到查询来获取实体的所有字段数据,例如Account,例如 select * from Account [ SQL syntax ] SOQL中是否有类似上面的语法来提取a
我正在尝试通过允许指定无效电子邮件地址的其他服务将电子邮件地址存储在 Salesforce.com 中。如果这些错误的无效电子邮件地址之一通过其 Web 服务 API 发送到 Salesforce.c
我想获取安装在 salesforce 组织中的所有包的命名空间前缀。我该怎么做? 最佳答案 一种相当简单的方法是查询 ApexClass 对象并获取不同的 NamespacePrefix 值。 Sel
你好, 好吧,我很困惑。我的任务是更新一个 PHP 脚本,该脚本使用 BulkAPI 将一些数据 upsert 到 Opportunity 实体中。 这一切都很顺利,只是 Bulk API 为一些明确
我是一名优秀的程序员,十分优秀!