在与Salesforce Canvas集成的Angular 5 Web应用程序中获取签名请求
我正在尝试将现有的Angular 5 Web应用程序集成到Salesforce画布中。我使用OAUTH设置创建了Salesforce连接的应用程序,并提供了画布应用程序URL作为现有angular 5 Web应用程序的路由之一。
当我在“应用程序预览器”中预览画布应用程序时,它确实路由到我们的应用程序(因为我在页面上使用简单的文字),但是我无法读取Salesforce上下文,甚至无法获得“ signed_request”。
这是我尝试获取对“ signed_request”的访问权限的方式,但出现错误,错误为“ ERROR TypeError:无法读取未定义的属性'client'。我确实从canvas-js-sdk导入了“ sfdc”。
import * as sfdc from '@salesforce/canvas-js-sdk';
sfdc.canvas.client.refreshSignedRequest(function(data) {
if (data.status === 200) {
var signedRequest = data.payload.response;
console.log(signedRequest);
var part = signedRequest.split('.')[1];
var obj = JSON.parse(sfdc.canvas.decode(part));
console.log(obj);
}
});
有人可以告诉我我在这里想念什么吗?还是还有其他方法可以让我获得“ signed_request”?
谢谢。
Salesforce,画布,集成,Web应用程序,Angular 5,sfdc,force.com
答案 0 :(得分:1)
我相信您只是导入了不正确的JavaScript SDK。 请阅读本文:https://medium.com/@clintpitzak/how-to-use-external-javascript-libraries-in-angular-8-247baacbdccf,希望对您有所帮助。
首先,您需要像脚本js一样在angular.json中声明canvas-app.js。
],
"scripts": [
"./node_modules/@salesforce/canvas-js-sdk/js/canvas-all.js"
]
例如,您还可以在index.html文件中提供这些脚本。
<script type="text/javascript" src="scripts.js"></script>
在您的组件中,您应该使用此库对象的全局名称声明一个变量
declare var Sfdc: any;
然后,您就可以在组件中使用Sfdc变量了。
示例:
ngOnInit(): void {
Sfdc.canvas.oauth.loggedin();
仅此而已!
但是,当您在连接的应用程序中使用“ OAuth Webflow(GET)”访问方法时,您将无法获得已签名的rquest。 是不同的approuch。
至少您可以在JavaScriptSDK中的refreshSignedRequest方法的描述中了解此行为:
@description刷新已签名的请求。按需获取新的签名请求。注意 画布应用的身份验证机制必须设置为SignedRequest而不是OAuth。
因此,您必须使用其他方法,请阅读此article。
还有this。
我希望。会很有帮助。