Получение подписанного запроса в веб-приложении Angular 5, интегрированном с Salesforce Canvas

Получение подписанного запроса в веб-приложении Angular 5, интегрированном с Salesforce Canvas

Я пытаюсь интегрировать наше существующее веб-приложение Angular 5 в систему Salesforce. Я создал подключенное приложение Salesforce с настройкой OAUTH, предоставив URL-адрес приложения холста в качестве одного из маршрутов существующего углового 5 веб-приложения.

При предварительном просмотре приложения canvas в "app previewer" оно направляется к нашему приложению (так как я печатаю простой текст на странице), но я не могу прочитать контекст Salesforce или даже получить "signature_request".

Вот как я пытался получить доступ к "signature_request", но я получаю ошибку как "ОШИБКА TypeError: Невозможно прочитать свойство" client "из неопределенного". Я импортировал "sfdc" из canvas-js-sdk.

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);
      }
    });

Может кто-нибудь сказать, что мне здесь не хватает? или есть другой способ, которым я могу заполучить "signature_request"?

Заранее спасибо.

Salesforce, Canvas, интеграция, веб-приложение, Angular 5, sfdc, force.com

0 ответов

Я считаю, что вы только что неправильно импортировали JavaScript SDK. Прочтите эту статью: https://medium.com/@clintpitzak/how-to-use-external-javascript-libraries-in-angular-8-247baacbdccf, надеюсь, она будет вам полезна.

Во-первых, вам нужно объявить canvas-app.js в angular.json как скрипт 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) в своем подключенном приложении, вы не можете получить подписанный запрос. Это другой подход.

По крайней мере, вы могли прочитать об этом в описании метода refreshSignedRequest в JavaScriptSDK:

@description Обновить подписанный запрос. Получите новый подписанный запрос по запросу. Обратите внимание, что длямеханизма проверки подлинности приложения Canvas должно быть установлено значение SignedRequest, а не OAuth.

Итак, вы должны использовать другой подход, прочтите эту статью.

И это.

Я надеюсь. это будет полезно.

Другие вопросы по тегам