Получение подписанного запроса в веб-приложении 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.
Итак, вы должны использовать другой подход, прочтите эту статью.
И это.
Я надеюсь. это будет полезно.