离线电子演示文档,如何调用通过js访问SFDC数据
2015-03-01 13:19
1141 查看
今天又研究了一下如果通过一个静态的html文件,或者是HTML5的演示文档访问SFDC数据的问题。由于单纯的客户端js是不能创建server的,所以他不可能通过有状态的REST API访问SFDC,也不满足条件。从另一个角度出发SFDC上的某个URL是不对外开放,所以我们需要通过REST API 获取sessionID或者token,然后保存到cookie中等等操作。但是如果通过Site将该URL开放出来,然后通过设定特定的加密算法进行验证的话,安全得到保障,而且解决该问题。
但是SFDC的site有访问时长和流量的限制,这个一点暂时没办法客服。
下面介绍如果实现:
1、创建site,如 前salesforce 和微信的集成(一)通过SFDC Site打开微信开发接口
2、创建创建HTML和js文件,引入jquery,核心js代码如下:
由于访问的时候单独为离线的一个文件,所以遇到了跨域访问的问题,解决方法就是dataType:"jsonp",不过网上有很多方案,可以查查看。
3、编写SFDC端的代码,实质意义上的servlet代码
4、这样在离线端访问的时候如图,这样完成的过程就实现了。
![](http://img.blog.csdn.net/20150301131220954?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZ2FvZmx5ODk=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
5、补充:如何实现加密,
1)可以通过离线端获取用户的id,(因为一般情况下,这种电子会集成到移动端的内容,如ipad,手机等)。通过userid确认该用户在系统中存在,而后返回数据。
2)通过传递特定的标识字符串+ 时间戳等参数,在通过特定的加密算法解密,而后比较。
但是SFDC的site有访问时长和流量的限制,这个一点暂时没办法客服。
下面介绍如果实现:
1、创建site,如 前salesforce 和微信的集成(一)通过SFDC Site打开微信开发接口
2、创建创建HTML和js文件,引入jquery,核心js代码如下:
//跨域 $.ajax({ dataType: "jsonp", url: "https://wechatfeiyang-developer-edition.na10.force.com/services/apexrest/testApi", //data: data, success: function(jsoncallback,data){ }, failure:function(){ alert('asdfasdfas'); } }); function jsoncallback(json){ alert(json.name); }
由于访问的时候单独为离线的一个文件,所以遇到了跨域访问的问题,解决方法就是dataType:"jsonp",不过网上有很多方案,可以查查看。
3、编写SFDC端的代码,实质意义上的servlet代码
@RestResource(urlMapping='/testApi/*') global with sharing class WeChatRestController{ @HttpGet global static void doGet(){ /* String signature = RestContext.request.params.get('signature'); String timestamp = RestContext.request.params.get('timestamp'); String nonce = RestContext.request.params.get('nonce'); String echostr = RestContext.request.params.get('echostr'); System.debug(echostr + ' - ' + timestamp);*/ RestContext.response.addHeader('Content-Type', 'text/plain'); String echostr = '{"name":"gaofeiyang"}'; RestContext.response.responseBody = Blob.valueOf('jsoncallback(' + echostr + ')'); //RestContext.response.responseBody = Blob.valueOf( echostr ); system.debug('========================='); //return echostr; } }
4、这样在离线端访问的时候如图,这样完成的过程就实现了。
5、补充:如何实现加密,
1)可以通过离线端获取用户的id,(因为一般情况下,这种电子会集成到移动端的内容,如ipad,手机等)。通过userid确认该用户在系统中存在,而后返回数据。
2)通过传递特定的标识字符串+ 时间戳等参数,在通过特定的加密算法解密,而后比较。
相关文章推荐
- 客户端如何通过咏南中间件调用存储过程和数据分页查询和文件传输的演示
- 如何通过AS3加载外部SWF文件,调用外部文件文档类的方法?
- 如何从流程助手中(Workflow Agent)访问文档的数据,如表单类型名称
- php和js如何通过json互相传递数据相关问题探讨
- 如何通过AS3加载外部SWF文件,调用外部文件文档类的方法?
- [转]SQLSERVER存储过程调用不同数据库的数据_存储过程中通过链接服务器访问远程服务器
- 【cocos2d-js官方文档】二十四、如何在android平台上使用js直接调用Java方法
- CSharp 如何通过拼接XML调用存储过程来查询数据
- 如何通过 WinCE 访问 WAP 数据
- php和js如何通过json互相传递数据(转)
- 【cocos2d-js官方文档】二十三、如何在IOS平台上使用js直接调用OC方法
- 如何在C程序中访问文本文档,并读取数据
- 如何: 通过HTML文档对象模型访问文档中的ActiveX控件的属性 .
- php和js如何通过json互相传递数据相关问题探讨
- android开发 如何通过web服务器访问MYSQL数据库并且使其数据同步到android SQLite数据库?
- 前台页面通过JS调用Servlet访问到后台类
- 如何在aSP中通过OccC调用Excel中的数据
- 前台页面通过JS调用Servlet访问到后台类
- 页面前台通过JS访问WEB SERVICES,以及如何处理返回结果.
- 如何通过C++,实现多个文档内字符(数据)批量提取与保存