0

我正在使用这个应用程序作为我想要做的事情的基础。https://github.com/sgshawnblanchard/CanvasNodeJS

我遇到的问题是,我认为我不太了解需要发生什么才能通过 Canvas 应用程序发布到 Chatter 摘要。我一切正常,但是在这个页面上:https ://github.com/sgshawnblanchard/CanvasNodeJS/blob/master/public/index.html

您会看到他正在发布“签名请求”,这就是我感到困惑的地方。我知道我需要发布,并且该值将让 Salesforce 知道我有权发布到提要,但是我如何获得该值?在您看到的示例中。

<form action="canvas" method="post">
            <input id="signed_request" name="signed_request" type="text" value="Pxy%2FPFsGb%2FfH1ORo%2B0vqdJjCi97Bypek0hzST8UIGzY%3D.eyJjb250ZXh0Ijp7InVzZXIiOnsibGFuZ3VhZ2UiOiJlbl9VUyIsInRpbWVab25lIjoiQW1lcmljYS9DaGljYWdvIiwibG9jYWxlIjoiZW5fVVMiLCJmdWxsTmFtZSI6IlNoYXduIEJsYW5jaGFyZCIsInVzZXJJZCI6IjAwNTQwMDAwMDAxQ3ppQ0FBUyIsInVzZXJUeXBlIjoiU1RBTkRBUkQiLCJ1c2VyTmFtZSI6InNoYXduX2JsYW5jaGFyZEBzY2h1bWFjaGVyZ3JvdXAuY29tLmNhbnZhcyIsImVtYWlsIjoic2hhd25fYmxhbmNoYXJkQHNjaHVtYWNoZXJncm91cC5jb20uY2FudmFzIiwicHJvZmlsZVBob3RvVXJsIjoiaHR0cHM6Ly9zZ2NvcnAtLWNhbnZhcy0tYy5jczE1LmNvbnRlbnQuZm9yY2UuY29tL3Byb2ZpbGVwaG90by83MjllMDAwMDAwMDAybm8vRiIsInByb2ZpbGVJZCI6IjAwZTMwMDAwMDAwaFFWMCIsImZpcnN0TmFtZSI6IlNoYXduIiwibGFzdE5hbWUiOiJCbGFuY2hhcmQiLCJhY2Nlc3NpYmlsaXR5TW9kZUVuYWJsZWQiOmZhbHNlLCJyb2xlSWQiOiIwMEU0MDAwMDAwMGtaU1kiLCJjdXJyZW5jeUlTT0NvZGUiOiJVU0QiLCJwcm9maWxlVGh1bWJuYWlsVXJsIjoiaHR0cHM6Ly9zZ2NvcnAtLWNhbnZhcy0tYy5jczE1LmNvbnRlbnQuZm9yY2UuY29tL3Byb2ZpbGVwaG90by83MjllMDAwMDAwMDAybm8vVCJ9LCJlbnZpcm9ubWVudCI6eyJwYXJhbWV0ZXJzIjp7fSwiZGltZW5zaW9ucyI6eyJ3aWR0aCI6IjgwMHB4IiwiaGVpZ2h0IjoiOTAwcHgifSwibG9jYXRpb25VcmwiOiJodHRwczovL3NnY29ycC0tY2FudmFzLmNzMTUubXkuc2FsZXNmb3JjZS5jb20vX3VpL3BsYXRmb3JtL2Nvbm5lY3QvdWkvQ2FudmFzUHJldmlld2VyVWk%2FcmV0VVJMPSUyRnVpJTJGc2V0dXAlMkZTZXR1cCUzRnNldHVwaWQlM0RTdHVkaW8mc2V0dXBpZD1DYW52YXNQcmV2aWV3ZXJVaSIsInVpVGhlbWUiOiJUaGVtZTMiLCJ2ZXJzaW9uIjp7ImFwaSI6IjI3LjAiLCJzZWFzb24iOiJTUFJJTkcifX0sIm9yZ2FuaXphdGlvbiI6eyJuYW1lIjoiVGhlIFNjaHVtYWNoZXIgR3JvdXAiLCJvcmdhbml6YXRpb25JZCI6IjAwRGUwMDAwMDAwN3ZpYkVBQSIsIm11bHRpY3VycmVuY3lFbmFibGVkIjpmYWxzZSwiY3VycmVuY3lJc29Db2RlIjoiVVNEIn0sImxpbmtzIjp7ImVudGVycHJpc2VVcmwiOiIvc2VydmljZXMvU29hcC9jLzI3LjAvMDBEZTAwMDAwMDA3dmliIiwibWV0YWRhdGFVcmwiOiIvc2VydmljZXMvU29hcC9tLzI3LjAvMDBEZTAwMDAwMDA3dmliIiwicGFydG5lclVybCI6Ii9zZXJ2aWNlcy9Tb2FwL3UvMjcuMC8wMERlMDAwMDAwMDd2aWIiLCJyZXN0VXJsIjoiL3NlcnZpY2VzL2RhdGEvdjI3LjAvIiwic29iamVjdFVybCI6Ii9zZXJ2aWNlcy9kYXRhL3YyNy4wL3NvYmplY3RzLyIsInNlYXJjaFVybCI6Ii9zZXJ2aWNlcy9kYXRhL3YyNy4wL3NlYXJjaC8iLCJxdWVyeVVybCI6Ii9zZXJ2aWNlcy9kYXRhL3YyNy4wL3F1ZXJ5LyIsInJlY2VudEl0ZW1zVXJsIjoiL3NlcnZpY2VzL2RhdGEvdjI3LjAvcmVjZW50LyIsInVzZXJVcmwiOiIvMDA1NDAwMDAwMDFDemlDQUFTIiwiY2hhdHRlckZlZWRzVXJsIjoiL3NlcnZpY2VzL2RhdGEvdjI3LjAvY2hhdHRlci9mZWVkcyIsImNoYXR0ZXJHcm91cHNVcmwiOiIvc2VydmljZXMvZGF0YS92MjcuMC9jaGF0dGVyL2dyb3VwcyIsImNoYXR0ZXJVc2Vyc1VybCI6Ii9zZXJ2aWNlcy9kYXRhL3YyNy4wL2NoYXR0ZXIvdXNlcnMiLCJjaGF0dGVyRmVlZEl0ZW1zVXJsIjoiL3NlcnZpY2VzL2RhdGEvdjI3LjAvY2hhdHRlci9mZWVkLWl0ZW1zIn19LCJhbGdvcml0aG0iOiJITUFDU0hBMjU2IiwidXNlcklkIjoiMDA1NDAwMDAwMDFDemlDIiwiY2xpZW50Ijp7Imluc3RhbmNlSWQiOiIwNlBlMDAwMDAwMDhPS2YiLCJjbGllbnRJZCI6IjNNVkc5ZFBHenBjM2tXeWQuSWtvcTJuVG5uTVI3OWkuOWphR0d5aVBQRDk1WXhNMHNDZDNaRWplX0Jhb1NpU0FtaXU3OWFqdVZQekJJbXdDRFB6UlAiLCJ0YXJnZXRPcmlnaW4iOiJodHRwczovL3NnY29ycC0tY2FudmFzLmNzMTUubXkuc2FsZXNmb3JjZS5jb20iLCJpbnN0YW5jZVVybCI6Imh0dHBzOi8vc2djb3JwLS1jYW52YXMuY3MxNS5teS5zYWxlc2ZvcmNlLmNvbSIsIm9hdXRoVG9rZW4iOiIwMERlMDAwMDAwMDd2aWIhQVFrQVFIS1EwaFIudUl5alFuVW1ZeF9KZTVfek9CUUJ4RGY0ZF9NNFpTMGc0dmJ1am4yS0Y3UjcwN3AweVI2TGI5ZUxLZDVzcVZxd2xUUnpTXzhySzVNNnpBVmZINWNrIn0sImlzc3VlZEF0IjpudWxsfQ%3D%3D" />
            <input type="submit" value="submit"/>
        </form>

我知道这个值由两件事组成,在这里http://www.salesforce.com/us/developer/docs/platform_connect/Content/canvas_app_signed_req_authentication.htm

签名的请求是由以下元素连接而成的字符串:

使用 HMAC SHA–256 算法 A 句点 (“.”) 加密的画布应用程序消费者机密

以 Base64 编码的上下文和授权令牌 JSON

签名的请求看起来与此类似,尽管它会更长:9Rpl6rE7R2bSNjoSfYdERk8nffmgtKQNhr5U/5eSJPI=.eyJjb250ZXh0Ijp7InVzZXIiOnsibGFuZ3V....

我知道如何从 SalesForce 设置中获取我的秘密,但是我不知道“以 Base64 编码的上下文和授权令牌 JSON”是什么意思

我是否正确地认为我需要获取这些静态值并创建一个长字符串,就像开发人员在示例中所做的那样并发布它,以及我想发送给 Chatter 的任何消息?还是我错过了什么?

这是我观看的另一个视频,但是那个人没时间了,没有展示它实际上是如何工作的https://www.youtube.com/watch?v=kcNBwOqj2qA

4

1 回答 1

0

原来是我没有正确完成的权限设置。不确定是哪一个导致我的应用程序失败,但我只是在 Salesforce 应用程序预览沙盒上创建了一个 Heroku 应用程序,然后对它们的开箱即用设置进行了一对一的比较。那成功了。

于 2014-08-29T17:43:11.020 回答