1

在与 Salesforce Canvas 集成的 Angular 5 Web 应用程序中获取签名请求

我正在尝试将我们现有的 Angular 5 Web 应用程序集成到 Salesforce 画布中。我使用 OAUTH 设置创建了 Salesforce 连接的应用程序,提供了画布应用程序 URL 作为现有 Angular 5 Web 应用程序的路由之一。

当我在“应用程序预览器”中预览画布应用程序时,它会路由到我们的应用程序(因为我正在页面上打印简单的文本),但我无法读取 Salesforce 上下文,甚至无法获得“签名请求”。

这就是我尝试访问“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、Canvas、集成、Web 应用程序、Angular 5、sfdc、force.com

4

1 回答 1

1

我相信您只是错误地导入了 JavaScript SDK。请阅读这篇文章:https ://medium.com/@clintpitzak/how-to-use-external-javascript-libraries-in-angular-8-247baacbdccf我希望它会有所帮助。

首先,您需要在 angular.json 中声明 canvas-app.js,就像脚本 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)”访问方法时 - 您无法获得签名的请求。这是不同的方法。

至少您可以在 JavaScriptSDK 中对 refreshSignedRequest 方法的描述中了解此行为:

@description 刷新签名的请求。按需获取新的签名请求。请注意, 画布应用程序的身份验证机制必须设置为 SignedRequest 而不是 OAuth。

因此,您必须使用其他方法,请阅读本文

这个

我希望。这会很有帮助。

于 2020-09-01T09:02:00.010 回答