{"id":4165,"date":"2024-03-04T19:12:24","date_gmt":"2024-03-04T11:12:24","guid":{"rendered":"http:\/\/www.ponybai.com\/?p=4165"},"modified":"2023-12-08T21:48:38","modified_gmt":"2023-12-08T13:48:38","slug":"isvforce-%e6%8c%87%e5%8d%97","status":"publish","type":"post","link":"http:\/\/www.ponybai.com\/?p=4165","title":{"rendered":"ISVforce \u6307\u5357\uff1a\u6784\u5efa\u548c\u5206\u53d1 AppExchange \u89e3\u51b3 \u65b9\u6848"},"content":{"rendered":"\n<p>\u4f5c\u4e3a\u72ec\u7acb\u8f6f\u4ef6\u4f9b\u5e94\u5546 \uff08ISV\uff09 \u5efa\u7acb\u84ec\u52c3\u53d1\u5c55\u7684 Salesforce \u4e1a\u52a1\u3002\u5f00\u59cb\u8005 \u52a0\u5165 Salesforce \u5408\u4f5c\u4f19\u4f34\u8ba1\u5212\u5e76\u719f\u6089\u5bf9\u60a8\u6709\u7528\u7684\u8d44\u6e90 AppExchange ISV \u6216\u54a8\u8be2\u4e4b\u65c5\u3002\u7136\u540e\uff0c\u5b66\u4e60\u8ba1\u5212\u3001\u6784\u5efa\u3001\u5206\u53d1\u3001\u9500\u552e\u548c\u652f\u6301 AppExchange \u5e02\u573a\u7684\u89e3\u51b3\u65b9\u6848\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u53d1\u884c\u8bf4\u660e<\/strong><br>\u4f7f\u7528 Salesforce \u53d1\u884c\u8bf4\u660e\u4e86\u89e3 AppExchange \u5408\u4f5c\u4f19\u4f34\u7684\u6700\u65b0\u66f4\u65b0\u548c\u6280\u672f\u66f4\u6539\uff0c\u5305\u62ec\u6253\u5305\u3001\u5206\u6790\u548c\u5b89\u5168\u7f16\u7801\u5de5\u5177\u3002<\/li>\n\n\n\n<li><strong>\u51c6\u5907\u5728 AppExchange \u4e0a\u5206\u53d1 \u5728 AppExchange<\/strong><br>\u4e0a\u5217\u51fa\u89e3\u51b3\u65b9\u6848\u6216\u54a8\u8be2\u670d\u52a1\u4e4b\u524d\uff0c\u8bf7\u5b8c\u6210\u5148\u51b3\u6761\u4ef6\u4efb\u52a1\u3002\u9996\u5148\uff0c\u6ce8\u518c Salesforce \u5408\u4f5c\u4f19\u4f34\u8ba1\u5212\u3002\u63a5\u4e0b\u6765\uff0c\u786e\u8ba4\u60a8\u6709\u5408\u4f5c\u4f19\u4f34\u4e1a\u52a1\u7ec4\u7ec7\u3002\u7136\u540e\uff0c\u719f\u6089\u53ef\u5e2e\u52a9\u60a8\u9ad8\u6548\u5bfc\u822a\u5408\u4f5c\u4f19\u4f34\u65c5\u7a0b\u7684\u8d44\u6e90\u548c\u6587\u6863\u3002<\/li>\n\n\n\n<li><strong>\u4f7f\u7528\u6258\u7ba1\u8f6f\u4ef6\u5305\u5f00\u53d1 AppExchange \u89e3\u51b3\u65b9\u6848<\/strong><br>\u6258\u7ba1\u8f6f\u4ef6\u5305\u662f Salesforce \u5408\u4f5c\u4f19\u4f34\u7528\u6765\u521b\u5efa\u4e1a\u52a1\u5e94\u7528\u7a0b\u5e8f\u5e76\u901a\u8fc7 AppExchange \u5c06\u5176\u5e94\u7528\u7a0b\u5e8f\u5206\u53d1\u7ed9\u5ba2\u6237\u7684\u5de5\u5177\u3002\u6258\u7ba1\u8f6f\u4ef6\u5305\u63d0\u4f9b\u7684\u529f\u80fd\u5957\u4ef6\u53ef\u5e2e\u52a9\u60a8\u5206\u53d1\u3001\u8bb8\u53ef\u3001\u8bd5\u7528\u529f\u80fd\u3001\u6392\u9664\u6545\u969c\u5e76\u4ece\u4ea7\u54c1\u4e2d\u83b7\u5229\u3002<\/li>\n\n\n\n<li>\u8bbe\u8ba1\u60a8\u7684 AppExchange \u89e3\u51b3\u65b9\u6848 \u4e86\u89e3\u5f71\u54cd\u00a0<strong>AppExchange \u89e3\u51b3\u65b9\u6848<\/strong><br>\u8bbe\u8ba1\u7684\u4f53\u7cfb\u7ed3\u6784\u6982\u5ff5\u548c\u5b89\u5168\u8981\u6c42\u3002<\/li>\n\n\n\n<li><strong>\u901a\u8fc7 AppExchange \u5b89\u5168\u5ba1\u6838<\/strong><br>[\u751f\u6548\u65e5\u671f\uff1a2023 \u5e74 8 \u6708 9 \u65e5] \u5728 Salesforce\uff0c\u6ca1\u6709\u4ec0\u4e48\u6bd4\u5ba2\u6237\u7684\u4fe1\u4efb\u66f4\u91cd\u8981\u3002\u4fe1\u4efb\u9700\u8981\u5b89\u5168\u3002\u8981\u5728 AppExchange \u4e0a\u5206\u53d1\u6258\u7ba1\u8f6f\u4ef6\u5305\u3001Salesforce Platform API \u89e3\u51b3\u65b9\u6848\u6216 Marketing Cloud API \u89e3\u51b3\u65b9\u6848\uff0c\u5b83\u5fc5\u987b\u901a\u8fc7\u6211\u4eec\u7684\u5b89\u5168\u5ba1\u67e5\u3002\u4e86\u89e3\u5982\u4f55\u51c6\u5907\u5e76\u901a\u8fc7\u5b89\u5168\u5ba1\u67e5\u3002<\/li>\n\n\n\n<li><strong>\u5728 AppExchange \u4e0a\u53d1\u5e03\u89e3\u51b3\u65b9\u6848 \u4f7f\u7528 AppExchange<\/strong><br>\u5408\u4f5c\u4f19\u4f34\u63a7\u5236\u53f0\u521b\u5efa\u89e3\u51b3\u65b9\u6848\u5217\u8868\u3001\u542f\u52a8\u5b89\u5168\u5ba1\u67e5\u3001\u7ba1\u7406\u8bb8\u53ef\u8bc1\u8bbe\u7f6e\u4ee5\u53ca\u67e5\u770b\u5217\u8868\u7684 Marketplace Analytics\u3002<\/li>\n\n\n\n<li>\u4f7f\u7528 Checkout \u5728 AppExchange\u00a0<strong>\u4e0a\u9500\u552e \u4f7f\u7528 AppExchange Checkout<\/strong><br>\u76f4\u63a5\u4ece\u60a8\u7684\u5217\u8868\u63a5\u53d7\u4fe1\u7528\u5361\u4ed8\u6b3e\u548c\u94f6\u884c\u8f6c\u8d26\u3002\u4f7f\u7528\u7ed3\u8d26\u7ba1\u7406\u5e94\u7528\u7a0b\u5e8f\u5c06\u60a8\u7684\u9500\u552e\u548c\u6536\u5165\u6570\u636e\u8f6c\u5316\u4e3a\u89c1\u89e3\u548c\u64cd\u4f5c\u3002<\/li>\n\n\n\n<li><strong>\u4f7f\u7528 Analytics for\u00a0AppExchange \u5408\u4f5c\u4f19\u4f34<\/strong><br>\u76d1\u63a7\u6027\u80fd \u4e86\u89e3\u5ba2\u6237\u5982\u4f55\u5728 Marketplace Analytics \u4eea\u8868\u677f\u4e2d\u627e\u5230\u60a8\u7684 AppExchange \u5217\u8868\u5e76\u4e0e\u4e4b\u4ea4\u4e92\u3002\u901a\u8fc7\u6d4f\u89c8 App Analytics \u6570\u636e\uff0c\u4e86\u89e3\u8ba2\u9605\u8005\u5982\u4f55\u4f7f\u7528\u60a8\u7684\u5957\u9910\u3002<\/li>\n\n\n\n<li>\u4f7f\u7528 Channel Order\u00a0<strong>App \u5411 Salesforce \u62a5\u544a\u8ba2\u5355 \u4f7f\u7528 Channel Order App<\/strong><br>\uff08COA\uff09 \u521b\u5efa\u3001\u7ba1\u7406\u8ba2\u5355\u5e76\u5c06\u5176\u63d0\u4ea4\u5230 Salesforce\u3002\u5982\u679c\u60a8\u662f OEM \u5408\u4f5c\u4f19\u4f34\uff0c\u5219\u53ef\u4ee5\u4f7f\u7528 COA \u6765\u9884\u914d Salesforce \u8bb8\u53ef\u8bc1\u548c\u6536\u5165\u5206\u6210\u3002\u5982\u679c\u4f60\u662f ISV \u5408\u4f5c\u4f19\u4f34\uff0c\u5219\u53ef\u4ee5\u4f7f\u7528 COA \u8fdb\u884c\u6536\u5165\u5206\u6210\u3002\u5982\u679c\u60a8\u4f7f\u7528 AppExchange Checkout \u7ba1\u7406\u5ba2\u6237\u4ed8\u6b3e\uff0c\u8bf7\u4e0d\u8981\u4f7f\u7528 COA\u3002\u5f53\u5ba2\u6237\u8d2d\u4e70\u60a8\u7684 AppExchange \u89e3\u51b3\u65b9\u6848\u65f6\uff0c\u4f7f\u7528 Checkout \u7684\u5408\u4f5c\u4f19\u4f34\u7684\u6536\u5165\u4f1a\u81ea\u52a8\u62a5\u544a\u7ed9 Salesforce\u3002<\/li>\n\n\n\n<li>\u63d0\u4f9b AppExchange \u89e3\u51b3\u65b9\u6848\u7684\u514d\u8d39\u8bd5\u7528 \u901a\u8fc7\u63d0\u4f9b\u00a0<strong>AppExchange \u89e3\u51b3\u65b9\u6848<\/strong><br>\u7684\u514d\u8d39\u8bd5\u7528\uff0c\u63d0\u9ad8\u5ba2\u6237\u8f6c\u5316\u7387\u3002\u63a2\u7d22\u8bd5\u7528\u9009\u9879\uff0c\u5e76\u786e\u5b9a\u89e3\u51b3\u65b9\u6848\u7684\u6700\u4f73\u7c7b\u578b\u3002<\/li>\n\n\n\n<li>OEM\u00a0<strong>\u7528\u6237\u8bb8\u53ef\u8bc1\u6307\u5357<\/strong><br>\u4e86\u89e3 OEM \u5408\u4f5c\u4f19\u4f34\u53ef\u7528\u7684\u8bb8\u53ef\u8bc1\u7c7b\u578b\u3002<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">\u51c6\u5907\u597d\u5728 AppExchange \u4e0a\u5206\u53d1<\/h2>\n\n\n\n<p>\u5728 AppExchange \u4e0a\u5217\u51fa\u89e3\u51b3\u65b9\u6848\u6216\u54a8\u8be2\u670d\u52a1\u4e4b\u524d\uff0c\u8bf7\u5b8c\u6210 \u5148\u51b3\u6761\u4ef6\u4efb\u52a1\u3002\u9996\u5148\uff0c\u6ce8\u518c Salesforce \u5408\u4f5c\u4f19\u4f34\u8ba1\u5212\u3002\u63a5\u4e0b\u6765\uff0c\u9a8c\u8bc1\u60a8\u662f\u5426 \u62e5\u6709\u5408\u4f5c\u4f19\u4f34\u4e1a\u52a1\u7ec4\u7ec7\u3002\u7136\u540e\uff0c\u719f\u6089\u53ef\u4ee5 \u5e2e\u52a9\u60a8\u9ad8\u6548\u5730\u9a7e\u9a6d\u5408\u4f5c\u4f19\u4f34\u4e4b\u65c5\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u52a0\u5165 Salesforce \u5408\u4f5c\u4f19\u4f34\u793e\u533a<br>AppExchange \u89e3\u51b3\u65b9\u6848\u548c\u54a8\u8be2\u670d\u52a1\u7531\u00a0<strong>Salesforce \u5b98\u65b9\u5408\u4f5c\u4f19\u4f34<\/strong>\u6784\u5efa\u3002\u8981\u5f00\u59cb\u60a8\u7684\u5408\u4f5c\u4e4b\u65c5\uff0c\u8bf7\u52a0\u5165 Salesforce \u5408\u4f5c\u4f19\u4f34\u793e\u533a\u3002<\/li>\n\n\n\n<li><strong>\u9a8c\u8bc1\u5bf9 Salesforce\u00a0\u5408\u4f5c\u4f19\u4f34\u4e1a\u52a1\u7ec4\u7ec7\u7684<\/strong><br>\u8bbf\u95ee\u6743\u9650 \u4f5c\u4e3a Salesforce \u5408\u4f5c\u4f19\u4f34\uff0c\u60a8\u6709\u8d44\u683c\u52a0\u5165\u5408\u4f5c\u4f19\u4f34\u4e1a\u52a1\u7ec4\u7ec7 \uff08PBO\uff09\u3002\u60a8\u7684 PBO \u5305\u542b\u7528\u4e8e\u8bbe\u7f6e\u548c\u7ba1\u7406 AppExchange ISV \u4e1a\u52a1\u6216\u54a8\u8be2\u5b9e\u8df5\u7684\u5de5\u5177\u3002\u5728\u5f00\u59cb\u6784\u5efa\u89e3\u51b3\u65b9\u6848\u6216\u5b9e\u8df5\u4e4b\u524d\uff0c\u8bf7\u9a8c\u8bc1\u662f\u5426\u53ef\u4ee5\u8bbf\u95ee PBO\u3002<\/li>\n\n\n\n<li>\u7533\u8bf7 Salesforce \u5408\u4f5c\u4f19\u4f34\u4e1a\u52a1\u7ec4\u7ec7 \u5982\u679c\u60a8\u5728\u52a0\u5165 Salesforce \u5408\u4f5c\u4f19\u4f34\u793e\u533a\u65f6\u672a\u6536\u5230<strong>\u5408\u4f5c\u4f19\u4f34\u4e1a\u52a1\u7ec4\u7ec7<\/strong><br>\uff08PBO\uff09\uff0c\u8bf7\u8bb0\u5f55\u6848\u4f8b\u4ee5\u8bf7\u6c42\u3002\u5982\u679c\u60a8\u5728\u52a0\u5165\u5408\u4f5c\u4f19\u4f34\u793e\u533a\u65f6\u521b\u5efa\u4e86\u5355\u72ec\u7684\u7528\u6237\u540d\uff0c\u8bf7\u8df3\u8fc7\u6b64\u6b65\u9aa4\u3002\u52a0\u5165\u65f6\uff0c\u5df2\u81ea\u52a8\u9884\u914d PBO\u3002<\/li>\n\n\n\n<li>\u6d4f\u89c8\u9762\u5411 Salesforce \u5408\u4f5c\u4f19\u4f34\u7684\u5b66\u4e60\u8d44\u6e90 \u501f\u52a9\u6765\u81ea Trailhead\u3001\u5408\u4f5c\u4f19\u4f34\u793e\u533a\u7b49\u7684\u7cbe\u9009\u8d44\u6e90\uff0c\u66f4\u5feb\u5730\u5b9e\u73b0\u00a0<strong>Salesforce \u5408\u4f5c\u4f19\u4f34<\/strong><br>\u65c5\u7a0b\u4e2d\u7684\u91cc\u7a0b\u7891\u5e76\u5b9e\u73b0\u76ee\u6807\u3002<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">\u52a0\u5165 Salesforce \u5408\u4f5c\u4f19\u4f34\u793e\u533a<\/h2>\n\n\n\n<p>AppExchange \u89e3\u51b3\u65b9\u6848\u548c\u54a8\u8be2\u670d\u52a1\u7531 Salesforce \u5b98\u65b9\u5408\u4f5c\u4f19\u4f34\u6784\u5efa\u3002 \u8981\u5f00\u59cb\u60a8\u7684\u5408\u4f5c\u4e4b\u65c5\uff0c\u8bf7\u52a0\u5165 Salesforce \u5408\u4f5c\u4f19\u4f34\u793e\u533a\u3002<\/p>\n\n\n\n<p>\u60a8\u7684\u4e1a\u52a1\u76ee\u6807\u51b3\u5b9a\u4e86\u6211\u4eec\u4e0e\u60a8\u5408\u4f5c\u7684\u65b9\u5f0f\u3002\u52a0\u5165 Salesforce \u5408\u4f5c\u4f19\u4f34\u4e4b\u524d \u793e\u533a\uff0c\u4e86\u89e3\u00a0AppExchange ISV\u00a0\u548c\u54a8\u8be2\u5408\u4f5c\u4f19\u4f34\u5173\u7cfb\u3002<\/p>\n\n\n\n<p>\u63d0\u793a<\/p>\n\n\n\n<p>\u6211\u4eec\u5efa\u8bae\u60a8\u4e3a\u5408\u4f5c\u4f19\u4f34\u793e\u533a\u521b\u5efa\u4e00\u4e2a\u5355\u72ec\u7684\u7528\u6237\u540d\uff0c\u751a\u81f3 \u5982\u679c\u60a8\u6709\u73b0\u6709\u7684 Salesforce \u7528\u6237\u540d\u3002\u901a\u8fc7\u8fd9\u79cd\u65b9\u6cd5\uff0c\u60a8\u53ef\u4ee5\u7acb\u5373\u8bbf\u95ee\u60a8\u7684 \u5408\u4f5c\u4f19\u4f34\u4e1a\u52a1\u7ec4\u7ec7 \uff08PBO\uff09\uff0c\u5176\u4e2d\u5305\u542b\u7528\u4e8e\u8bbe\u7f6e\u548c\u7ba1\u7406 \u5546\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u8f6c\u5230\u00a0Salesforce \u5408\u4f5c\u4f19\u4f34\u793e\u533a\u3002<\/li>\n\n\n\n<li>\u5355\u51fb<strong>\u201c\u6210\u4e3a\u5408\u4f5c\u4f19\u4f34<\/strong>\u201d\u3002<\/li>\n\n\n\n<li>\u5355\u51fb<strong>\u201c\u7ee7\u7eed\u201d\u8fdb\u884c\u6ce8\u518c<\/strong>\u3002<\/li>\n\n\n\n<li>\u5355\u51fb<strong>\u52a0\u5165\u5408\u4f5c\u4f19\u4f34\u793e\u533a<\/strong>\u3002<\/li>\n\n\n\n<li>\u5355\u51fb<strong>\u201c\u83b7\u53d6 Salesforce \u7528\u6237\u540d<\/strong>\u201d\uff0c\u7136\u540e\u586b\u5199\u6240\u9700\u7684 \u9886\u57df\u3002<\/li>\n\n\n\n<li>\u5355\u51fb<strong>\u521b\u5efa\u7528\u6237\u540d<\/strong>\u3002\u6211\u4eec\u4f1a\u53d1\u9001\u4e00\u5c01\u786e\u8ba4\u7535\u5b50\u90ae\u4ef6\uff0c\u8981\u6c42\u60a8\u9a8c\u8bc1\u60a8\u7684\u5e10\u6237\u5e76\u8bbe\u7f6e \u5bc6\u7801\u3002<\/li>\n\n\n\n<li>\u4e3a\u60a8\u7684\u5e10\u6237\u8bbe\u7f6e\u5bc6\u7801\uff0c\u7136\u540e\u5355\u51fb<strong>\u201c\u6211\u6709\u6211\u7684 Salesforce \u7528\u6237\u540d &#8211; \u52a0\u5165\u5408\u4f5c\u4f19\u4f34\u793e\u533a\u3002<\/strong><\/li>\n\n\n\n<li>\u767b\u5f55\u5230\u5408\u4f5c\u4f19\u4f34\u793e\u533a\uff0c\u7136\u540e\u5b8c\u6210\u5269\u4f59\u7684\u8bbe\u7f6e\u4efb\u52a1\u3002<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">\u9a8c\u8bc1\u5bf9 Salesforce \u5408\u4f5c\u4f19\u4f34\u4e1a\u52a1\u7ec4\u7ec7\u7684\u8bbf\u95ee\u6743\u9650<\/h2>\n\n\n\n<p>\u4f5c\u4e3a Salesforce \u5408\u4f5c\u4f19\u4f34\uff0c\u60a8\u6709\u8d44\u683c\u52a0\u5165\u5408\u4f5c\u4f19\u4f34\u4e1a\u52a1\u7ec4\u7ec7 \uff08PBO\uff09\u3002\u60a8\u7684 PBO \u5305\u542b\u7528\u4e8e\u8bbe\u7f6e\u548c\u7ba1\u7406 AppExchange ISV \u4e1a\u52a1\u6216\u54a8\u8be2\u5b9e\u8df5\u7684\u5de5\u5177\u3002 \u5728\u5f00\u59cb\u6784\u5efa\u89e3\u51b3\u65b9\u6848\u6216\u5b9e\u8df5\u4e4b\u524d\uff0c\u8bf7\u9a8c\u8bc1\u662f\u5426\u53ef\u4ee5\u8bbf\u95ee PBO\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u767b\u5f55 Salesforce\uff0c\u4f7f\u7528\u60a8\u5728\u52a0\u5165\u5408\u4f5c\u4f19\u4f34\u65f6\u521b\u5efa\u7684\u7528\u6237\u540d\u548c\u5bc6\u7801 \u793e\u533a\u3002<\/li>\n\n\n\n<li>\u5355\u51fb\u5e94\u7528\u7a0b\u5e8f\u542f\u52a8\u5668\u3002<\/li>\n\n\n\n<li>\u5728\u201c\u5feb\u901f\u67e5\u627e\u201d\u6846\u4e2d\uff0c\u8f93\u5165\u201cEnvironment Hub\u201d\uff0c\u7136\u540e\u5355\u51fb\u201c<kbd>Environment Hub<\/kbd>\u201d\u3002<strong><\/strong><\/li>\n\n\n\n<li>\u5982\u679c\u91cd\u5b9a\u5411\u5230 Environment Hub \u5e94\u7528\uff0c\u5219\u8868\u793a\u4f60\u9a8c\u8bc1\u4e86 PBO \u8bbf\u95ee\u6743\u9650\u3002\u5982\u679c Environment Hub \u5e94\u7528\u7a0b\u5e8f\u5728\u201c\u5feb\u901f\u67e5\u627e\u201d\u6846\u4e2d\u4e0d\u53ef\u7528\uff0c\u8bf7\u5728\u00a0Salesforce \u5e2e\u52a9\u4e0a\u8bb0\u5f55\u6848\u4f8b\u4ee5\u8bf7\u6c42 PBO\u3002<\/li>\n<\/ol>\n\n\n\n<p>\u82e5\u8981\u4e86\u89e3\u6709\u5173 PBO \u7684\u8be6\u7ec6\u4fe1\u606f\uff0c\u8bf7\u6ce8\u518c\u201c\u4e86\u89e3\u5408\u4f5c\u4f19\u4f34\u4e1a\u52a1\u7ec4\u7ec7\u201d \uff08PBO\uff09Salesforce \u5408\u4f5c\u4f19\u4f34\u5b66\u4e60\u8425\u4e2d\u7684\u5de5\u5177\uff08\u9700\u8981\u767b\u5f55\uff09\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u7533\u8bf7 Salesforce \u5408\u4f5c\u4f19\u4f34\u4e1a\u52a1\u7ec4\u7ec7<\/h2>\n\n\n\n<p>\u5982\u679c\u60a8\u5728\u52a0\u5165 Salesforce \u65f6\u672a\u6536\u5230\u5408\u4f5c\u4f19\u4f34\u4e1a\u52a1\u7ec4\u7ec7 \uff08PBO\uff09 \u5408\u4f5c\u4f19\u4f34\u793e\u533a\uff0c\u8bb0\u5f55\u6848\u4f8b\u4ee5\u8bf7\u6c42\u6848\u4f8b\u3002\u5982\u679c\u60a8\u5728\u52a0\u5165\u65f6\u521b\u5efa\u4e86\u5355\u72ec\u7684\u7528\u6237\u540d \u5408\u4f5c\u4f19\u4f34\u793e\u533a\uff0c\u8bf7\u8df3\u8fc7\u6b64\u6b65\u9aa4\u3002PBO \u662f\u81ea\u52a8\u9884\u914d\u7684\uff0c\u5f53\u4f60 \u52a0\u5165\u3002<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u4f7f\u7528\u60a8\u6ce8\u518c Salesforce \u5408\u4f5c\u4f19\u4f34\u65f6\u6240\u7528\u7684\u7528\u6237\u540d\u767b\u5f55\u00a0Salesforce \u5e2e\u52a9\u00a0\u793e\u533a\u3002<\/li>\n\n\n\n<li>\u5355\u51fb\u5e10\u6237\u5207\u6362\u5668\uff0c\u5e76\u9a8c\u8bc1\u662f\u5426\u5df2\u9009\u62e9\u60a8\u7684\u5408\u4f5c\u4f19\u4f34\u5e10\u6237\u3002<\/li>\n\n\n\n<li>\u5355\u51fb<strong>\u201c\u8054\u7cfb\u652f\u6301\u4eba\u5458<\/strong>\u201d\u3002<\/li>\n\n\n\n<li>\u5355\u51fb\u201c<strong>\u521b\u5efa\u6848\u4f8b<\/strong>\u201d\uff0c\u7136\u540e\u586b\u5199\u5fc5\u586b\u5b57\u6bb5\u3002\n<ol class=\"wp-block-list\" style=\"list-style-type:lower-alpha\">\n<li>\u5bf9\u4e8e\u4e3b\u9898\uff0c\u8f93\u5165<kbd>\u8bf7\u6c42\u5408\u4f5c\u4f19\u4f34\u4e1a\u52a1\u7ec4\u7ec7 \uff08PBO\uff09\u3002<\/kbd><\/li>\n\n\n\n<li>\u5bf9\u4e8e\u63cf\u8ff0\uff0c\u8bf7\u6ce8\u610f\u60a8\u662f Salesforce \u5408\u4f5c\u4f19\u4f34\uff0c\u5e76\u4e14\u60a8\u6b63\u5728\u8bf7\u6c42 PBO\u3002<\/li>\n\n\n\n<li>\u5f53\u7cfb\u7edf\u63d0\u793a\u60a8\u9009\u62e9\u4ea7\u54c1\u65f6\uff0c\u5355\u51fb<strong>\u201c\u9009\u62e9\u5176\u4ed6\u4ea7\u54c1\/\u201d \u4e3b\u9898<\/strong>\u3002<\/li>\n\n\n\n<li>\u5bf9\u4e8e\u201c\u4ea7\u54c1\u201d\uff0c\u9009\u62e9<strong>\u201c\u5408\u4f5c\u4f19\u4f34\u8ba1\u5212\u548c\u6743\u76ca<\/strong>\u201d\u3002<\/li>\n\n\n\n<li>\u5bf9\u4e8e\u201c\u4e3b\u9898\u201d\uff0c\u9009\u62e9\u201c<strong>\u6f14\u793a\u548c\u5408\u4f5c\u4f19\u4f34\u4e1a\u52a1\u7ec4\u7ec7<\/strong>\u201d\u3002<\/li>\n\n\n\n<li>\u9009\u62e9\u5b9e\u4f8b\u7c7b\u578b\u548c\u4e25\u91cd\u6027\u7ea7\u522b\u3002<\/li>\n<\/ol>\n<\/li>\n\n\n\n<li>\u5355\u51fb\u201c<strong>\u521b\u5efa\u6848\u4f8b<\/strong>\u201d\u3002<\/li>\n<\/ol>\n\n\n\n<p>\u6211\u4eec\u4f1a\u5ba1\u6838\u6848\u4f8b\uff0c\u5e76\u4e0e\u60a8\u8054\u7cfb\u4ee5\u544a\u77e5\u540e\u7eed\u6b65\u9aa4\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u6d4f\u89c8\u9762\u5411 Salesforce \u5408\u4f5c\u4f19\u4f34\u7684\u5b66\u4e60\u8d44\u6e90<\/h2>\n\n\n\n<p>\u501f\u52a9 Salesforce \u5408\u4f5c\u4f19\u4f34\u4e4b\u65c5\uff0c\u66f4\u5feb\u5730\u8fbe\u5230\u91cc\u7a0b\u7891\u5e76\u5b9e\u73b0\u76ee\u6807 \u6765\u81ea Trailhead\u3001\u5408\u4f5c\u4f19\u4f34\u793e\u533a\u7b49\u7684\u7cbe\u9009\u8d44\u6e90\u3002<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>\u6211\u60f3\uff1a<\/th><th>\u63a8\u8350\u7684\u8d44\u6e90<\/th><\/tr><\/thead><tbody><tr><td>\u4e86\u89e3\u6784\u5efa AppExchange ISV \u7684\u57fa\u7840\u77e5\u8bc6 \u5546\u3002<\/td><td>Trailhead\uff1a\u5c06\u60a8\u7684\u4e1a\u52a1\u53d1\u5c55\u4e3a AppExchange \u5408\u4f5c\u4f19\u4f34<\/td><\/tr><tr><td>\u4e86\u89e3\u6784\u5efa Salesforce \u54a8\u8be2\u7684\u57fa\u7840\u77e5\u8bc6 \u5b9e\u8df5\u3002<\/td><td>Trailhead\uff1a\u5c06\u60a8\u7684\u5b9e\u8df5\u6784\u5efa\u4e3a \u54a8\u8be2\u5408\u4f5c\u4f19\u4f34<\/td><\/tr><tr><td>\u4f7f\u7528 AppExchange ISV \u5de5\u5177\u8fdb\u884c\u52a8\u624b\u5b9e\u8df5\uff0c\u5e76 \u6280\u672f\uff0c\u4f8b\u5982\u7b2c\u4e8c\u4ee3\u6258\u7ba1\u5305\u3002<\/td><td>Trailhead\uff1a\u5c06\u5e94\u7528\u7a0b\u5e8f\u6784\u5efa\u4e3a AppExchange \u4f19\u4f34<\/td><\/tr><tr><td>\u4e86\u89e3\u6784\u5efa\u5b89\u5168\u7684\u5de5\u5177\u548c\u6700\u4f73\u5b9e\u8df5 \u89e3\u51b3 \u65b9\u6848\u3002<\/td><td>Salesforce \u5f00\u53d1\u4eba\u5458\uff1a\u5b89\u5168\u5f00\u53d1\u4eba\u5458 \u4e2d\u5fc3<\/td><\/tr><tr><td>\u5f53\u6211\u9047\u5230\u56f0\u96be\u65f6\u63d0\u51fa\u95ee\u9898\u5e76\u83b7\u5f97\u5e2e\u52a9<\/td><td>Salesforce \u5408\u4f5c\u4f19\u4f34\u793e\u533a\uff1a\u95ee\u7b54\u793e\u533a \u7fa4<\/td><\/tr><tr><td>\u968f\u65f6\u4e86\u89e3 Salesforce \u5408\u4f5c\u4f19\u4f34\u7684\u66f4\u6539\u548c\u66f4\u65b0 \u7a0b\u5e8f<\/td><td>Salesforce \u5408\u4f5c\u4f19\u4f34\u793e\u533a\uff1a\u5b98\u65b9\uff1aAppExchange \u5408\u4f5c\u4f19\u4f34\u8ba1\u5212 \u793e\u533a\u7ec4<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">\u4f7f\u7528\u6258\u7ba1\u5305\u5f00\u53d1 AppExchange \u89e3\u51b3\u65b9\u6848<\/h2>\n\n\n\n<p>\u6258\u7ba1\u8f6f\u4ef6\u5305\u662f Salesforce \u5408\u4f5c\u4f19\u4f34\u7528\u4e8e\u521b\u5efa\u4e1a\u52a1\u5e94\u7528\u7a0b\u5e8f\u7684\u5de5\u5177\uff0c\u4ee5\u53ca \u901a\u8fc7 AppExchange \u5c06\u5176\u5e94\u7528\u7a0b\u5e8f\u5206\u53d1\u7ed9\u5ba2\u6237\u3002\u6258\u7ba1\u63d0\u4f9b\u7684\u529f\u80fd\u5957\u4ef6 \u8f6f\u4ef6\u5305\u53ef\u5e2e\u52a9\u4f60\u5206\u53d1\u3001\u8bb8\u53ef\u3001\u8bd5\u7528\u529f\u80fd\u3001\u5bf9\u4ea7\u54c1\u8fdb\u884c\u6545\u969c\u6392\u9664\u4ee5\u53ca\u4ece\u4e2d\u83b7\u5229\u3002<\/p>\n\n\n\n<p>\u7a0b\u5e8f\u5305\u662f\u60a8\u8ba1\u5212\u9500\u552e\u5e76\u5206\u53d1\u7ed9 Salesforce \u7684\u5e94\u7528\u7a0b\u5e8f\u7684\u5bb9\u5668 \u5ba2\u6237\u3002\u521b\u5efa\u4e00\u4e2a\u5305\uff0c\u7136\u540e\u6dfb\u52a0\u5305\u542b\u7684\u529f\u80fd\u3001\u81ea\u5b9a\u4e49\u9879\u548c\u67b6\u6784 \u4f60\u7684\u5e94\u7528\u3002\u53ef\u4ee5\u6253\u5305\u7684\u5143\u6570\u636e\u7ec4\u4ef6\u793a\u4f8b\u5305\u62ec\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Apex \u7c7b\u548c\u89e6\u53d1\u5668<\/li>\n\n\n\n<li>\u6807\u51c6\u5bf9\u8c61\u4e0a\u7684\u81ea\u5b9a\u4e49\u5b57\u6bb5<\/li>\n\n\n\n<li>\u81ea\u5b9a\u4e49\u5143\u6570\u636e\u7c7b\u578b<\/li>\n\n\n\n<li>\u81ea\u5b9a\u4e49\u5bf9\u8c61<\/li>\n\n\n\n<li>\u6d41<\/li>\n\n\n\n<li>\u95ea\u7535\u9875\u9762<\/li>\n\n\n\n<li>\u9875\u9762\u5e03\u5c40<\/li>\n<\/ul>\n\n\n\n<p>\u60a8\u7684\u5305\u53ef\u4ee5\u5305\u542b\u8bb8\u591a\u4e0d\u540c\u7684\u5143\u6570\u636e\u7ec4\u4ef6\uff0c\u4e5f\u53ef\u4ee5\u6253\u5305\u5355\u4e2a \u7ec4\u4ef6\uff0c\u4f8b\u5982\u6d41\u3002<\/p>\n\n\n\n<p>Salesforce \u63d0\u4f9b\u7b2c\u4e8c\u4ee3\u6258\u7ba1\u6253\u5305\uff08\u6258\u7ba1 2GP\uff09\u548c\u7b2c\u4e00\u4ee3 \u6258\u7ba1\u6253\u5305\uff08\u6258\u7ba1 1GP\uff09\u3002\u5c55\u671b\u672a\u6765\uff0c\u6211\u4eec\u5efa\u8bae\u6bcf\u4e2a\u4eba\u90fd\u4f7f\u7528\u6258\u7ba1 2GP \u6765 \u521b\u5efa\u65b0\u5e94\u7528\u3002\u6709\u5173\u4f7f\u7528\u7b2c\u4e8c\u4ee3\u6258\u7ba1\u6253\u5305\u7684\u4f18\u52bf\u7684\u8be6\u7ec6\u4fe1\u606f\uff0c\u8bf7\u53c2\u9605\u4e3a\u4ec0\u4e48\u8981\u5207\u6362\u5230\u7b2c\u4e8c\u4ee3\u6258\u7ba1\u6253\u5305 \u5305\u88c5\uff1f<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u8bbe\u8ba1\u60a8\u7684 AppExchange \u89e3\u51b3\u65b9\u6848<\/h2>\n\n\n\n<p>\u4e86\u89e3\u5f71\u54cd AppExchange \u7684\u67b6\u6784\u6982\u5ff5\u548c\u5b89\u5168\u8981\u6c42 \u89e3\u51b3\u65b9\u6848\u8bbe\u8ba1\u3002<\/p>\n\n\n\n<p>\u6ce8\u610f<\/p>\n\n\n\n<p>\u6784\u5efa\u65b0\u5e94\u7528\uff1f\u60a8\u662f\u5426\u8003\u8651\u8fc7\u4f7f\u7528\u7b2c\u4e8c\u4ee3 \u6258\u7ba1\u8f6f\u4ef6\u5305\uff1f\u7075\u6d3b\u7684\u7248\u672c\u63a7\u5236\u548c\u8de8\u5305\u5171\u4eab\u547d\u540d\u7a7a\u95f4\u7684\u80fd\u529b\u662f \u5f00\u53d1\u4eba\u5458\u559c\u6b22\u521b\u5efa\u7b2c\u4e8c\u4ee3\u6258\u7ba1\u5305\u7684\u4e24\u4e2a\u539f\u56e0\u3002\u6211\u4eec\u8ba4\u4e3a\u4f60\u4f1a \u4e5f\u559c\u6b22\u5b83\u3002\u82e5\u8981\u4e86\u89e3\u8be6\u7ec6\u4fe1\u606f\uff0c\u8bf7\u53c2\u9605\uff1a\u4e3a\u4ec0\u4e48\u8981\u5207\u6362\u5230\u7b2c\u4e8c\u4ee3\u6258\u7ba1 \u5c01\u88c5\u4ee5\u53ca\u7b2c\u4e00\u4ee3\u548c\u7b2c\u4e8c\u4ee3\u7684\u6bd4\u8f83 \u6258\u7ba1\u5305\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>AppExchange \u5408\u4f5c\u4f19\u4f34\u548c\u89e3\u51b3\u65b9\u6848<\/strong><br>\u7684\u5b89\u5168\u8981\u6c42 [\u751f\u6548\u65e5\u671f\uff1a2023 \u5e74 8 \u6708 9 \u65e5] \u4f5c\u4e3a Salesforce \u5408\u4f5c\u4f19\u4f34\uff0c\u60a8\u8d1f\u8d23\u5b9e\u65bd\u548c\u7ef4\u62a4\u5168\u9762\u7684\u5b89\u5168\u8ba1\u5212\uff0c\u5e76\u7ef4\u62a4\u60a8\u5728 AppExchange \u4e0a\u5217\u51fa\u6216\u6839\u636e AppExchange \u5408\u4f5c\u4f19\u4f34\u8ba1\u5212\u5206\u53d1\u7684\u6240\u6709\u5e94\u7528\u7a0b\u5e8f\u7684\u5b89\u5168\u6027\u3002<\/li>\n\n\n\n<li><strong>\u7ec4\u7248\u548c\u4e13\u4e1a\u7248\u7684\u4f53\u7cfb\u7ed3\u6784\u6ce8\u610f\u4e8b\u9879<\/strong><\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">AppExchange \u5408\u4f5c\u4f19\u4f34\u548c\u89e3\u51b3\u65b9\u6848\u7684\u5b89\u5168\u8981\u6c42<\/h2>\n\n\n\n<p>\u3010\u751f\u6548\u65e5\u671f\uff1a2023\u5e748\u67089\u65e5\u3011\u4f5c\u4e3a Salesforce \u5408\u4f5c\u4f19\u4f34\uff0c\u60a8\u8d1f\u8d23 \u5b9e\u65bd\u548c\u7ef4\u62a4\u5168\u9762\u7684\u5b89\u5168\u8ba1\u5212\uff0c\u5e76\u7ef4\u62a4 \u60a8\u5728 AppExchange \u4e0a\u5217\u51fa\u6216\u5728 AppExchange \u5408\u4f5c\u4f19\u4f34\u4e0b\u5206\u53d1\u7684\u6240\u6709\u5e94\u7528\u7a0b\u5e8f \u7a0b\u5e8f\u3002<\/p>\n\n\n\n<p>\u6ce8\u610f<\/p>\n\n\n\n<p>AppExchange \u5408\u4f5c\u4f19\u4f34\u548c\u89e3\u51b3\u65b9\u6848\u7684\u8fd9\u4e9b\u5b89\u5168\u8981\u6c42\uff08\u4ee5\u4e0b\u7b80\u79f0\u201c\u8981\u6c42\u201d\uff09\u662f \u622a\u81f3\u6240\u5217\u751f\u6548\u65e5\u671f\u4e3a\u6b62\uff0c\u5e76\u4e00\u76f4\u6709\u6548\uff0c\u76f4\u5230\u6216\u9664\u975e\u5b83\u4eec \u5728\u6b64\u76f8\u540c\u6216\u91cd\u5b9a\u5411\u7684 URL \u4e0a\u88ab\u751f\u6548\u65e5\u671f\u8f83\u665a\u7684\u7248\u672c\u53d6\u4ee3\u3002SFDC\u53ef\u4ee5 \u4e0d\u65f6\u81ea\u884c\u51b3\u5b9a\u66f4\u65b0\u6216\u4fee\u6539\u8fd9\u4e9b\u8981\u6c42\uff0c\u65e0\u8bba\u662f\u5426 \u901a\u77e5\u3002\u8fd9\u4e9b\u8981\u6c42\u53d7 AppExchange \u5408\u4f5c\u4f19\u4f34\u8ba1\u5212\u7684\u7ea6\u675f\uff0c\u5e76\u6210\u4e3a AppExchange \u5408\u4f5c\u4f19\u4f34\u8ba1\u5212\u7684\u4e00\u90e8\u5206 \u653f\u7b56\u548c\u00a0Salesforce\u00a0\u5408\u4f5c\u4f19\u4f34\u8ba1\u5212\u534f\u8bae \uff08\u201cSPPA\u201d\uff09\uff0c\u89c1 https:\/\/www.salesforce.com\/company\/legal\/agreements\/\u3002\u672c\u8981\u6c42\u4e2d\u672a\u5b9a\u4e49\u7684\u5927\u5199\u672f\u8bed\u5177\u6709\u4ee5\u4e0b\u542b\u4e49 \u5728SPPA\u4e2d\u7ed9\u4e88\u4ed6\u4eec\u3002<\/p>\n\n\n\n<p>\u91cd\u8981<\/p>\n\n\n\n<p>\u5408\u4f5c\u4f19\u4f34\u5e94\u7528\u7a0b\u5e8f\uff0c\u5305\u62ec\u6258\u7ba1\u8f6f\u4ef6\u5305\u3001Salesforce Platform API \u89e3\u51b3\u65b9\u6848\u3001Marketing Cloud API \u89e3\u51b3\u65b9\u6848\u4ee5\u53ca\u672c\u6587\u63d0\u53ca\u7684\u5176\u4ed6\u89e3\u51b3\u65b9\u6848\uff0c \u662f Salesforce \u4e3b\u8981\u670d\u52a1\u534f\u8bae\u4e2d\u5b9a\u4e49\u7684\u975e SFDC \u5e94\u7528\u7a0b\u5e8f\uff08\u53ef\u5728 https:\/\/www.salesforce.com\/company\/legal\/agreements \u6216\u540e\u7eed URL\uff09\u3002\u5c3d\u7ba1\u6709 \u5bf9\u5408\u4f5c\u4f19\u4f34\u5e94\u7528\u7a0b\u5e8f\u8fdb\u884c\u5b89\u5168\u5ba1\u67e5\u65f6\uff0cSalesforce \u4e0d\u4fdd\u8bc1\u5176\u8d28\u91cf \u6216\u4efb\u4f55\u5408\u4f5c\u4f19\u4f34\u5e94\u7528\u7a0b\u5e8f\u7684\u5b89\u5168\u6027\uff0c\u5ba2\u6237\u6709\u8d23\u4efb\u8bc4\u4f30 \u5408\u4f5c\u4f19\u4f34\u5e94\u7528\u7a0b\u5e8f\u7684\u8d28\u91cf\u3001\u5b89\u5168\u6027\u548c\u529f\u80fd\u3002<\/p>\n\n\n\n<p>\u4f5c\u4e3a\u53c2\u4e0e AppExchange \u5408\u4f5c\u4f19\u4f34\u8ba1\u5212\u7684\u6761\u4ef6\uff0c\u60a8\u5fc5\u987b\u9075\u5b88 \u672c\u6587\u6863\u4e2d\u6982\u8ff0\u7684\u5b89\u5168\u8981\u6c42\u3002\u8fd9\u4e9b\u8981\u6c42\u5305\u62ec\u4e00\u822c \u9002\u7528\u4e8e\u6240\u6709 AppExchange \u5408\u4f5c\u4f19\u4f34\u548c\u5408\u4f5c\u4f19\u4f34\u5e94\u7528\u7a0b\u5e8f\u7684\u8981\u6c42\uff0c\u4ee5\u53ca\u5176\u4ed6\u8981\u6c42 \u7279\u5b9a\u4e8e\u4f7f\u7528\u7279\u5b9a \u6216\u4e0e\u7279\u5b9a \u6280\u672f\u6216\u65e8\u5728\u7528\u4e8e\u7279\u5b9a\u884c\u4e1a\u3002\u5728\u8fd9\u4e9b\u8981\u6c42\u4e2d\uff0c\u5408\u4f5c\u4f19\u4f34 \u5e94\u7528\u7a0b\u5e8f\u4e5f\u79f0\u4e3a\u201c\u89e3\u51b3\u65b9\u6848\u201d\u3002\u521b\u5efa\u6216\u7f16\u8f91 AppExchange \u65f6 \u53d1\u5e03\u65f6\uff0c\u60a8\u9700\u8981\u786e\u8ba4\u81ea\u5df1\u7b26\u5408\u8fd9\u4e9b\u8981\u6c42\u3002<\/p>\n\n\n\n<p>\u672c\u6587\u6863\u4e2d\u7684\u5b89\u5168\u8981\u6c42\u5e76\u4e0d\u8be6\u5c3d\u3002\u6211\u4eec\u9f13\u52b1\u5408\u4f5c\u4f19\u4f34 \u9075\u5faa\u6240\u6709\u9002\u7528\u7684\u884c\u4e1a\u5b89\u5168\u6807\u51c6\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u4e00\u822c AppExchange \u8981\u6c42<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u6240\u6709\u5408\u4f5c\u4f19\u4f34\u90fd\u5fc5\u987b\u9075\u5b88\u5b89\u5168\u7b56\u7565\u4e2d\u6240\u8ff0\u7684\u8981\u6c42\u00a0\u8981\u6c42\u3002<\/li>\n\n\n\n<li>\u6240\u6709\u5408\u4f5c\u4f19\u4f34\u5e94\u7528\u7a0b\u5e8f\u90fd\u5fc5\u987b\u7b26\u5408\u9632\u6b62\u5b89\u5168\u7f16\u7801\u51b2\u7a81\u4e2d\u6240\u8ff0\u7684\u8981\u6c42\u3002<\/li>\n\n\n\n<li>\u6240\u6709\u5408\u4f5c\u4f19\u4f34\u5e94\u7528\u7a0b\u5e8f\u90fd\u5fc5\u987b\u901a\u8fc7 Salesforce \u5b89\u5168\u5ba1\u67e5\u548c\u8bc4\u4f30\uff0c\u5176\u4e2d \u6839\u636e AppExchange \u5408\u4f5c\u4f19\u4f34\u8ba1\u5212\u653f\u7b56\u7684\u8981\u6c42\u3002<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">B2C \u5546\u52a1\u89e3\u51b3\u65b9\u6848\u5b89\u5168\u8981\u6c42<\/h2>\n\n\n\n<p>\u5982\u679c\u60a8\u7684\u5408\u4f5c\u4f19\u4f34\u5e94\u7528\u7a0b\u5e8f\u662f B2C Commerce Cartridge \u6216 Headless Integration\uff0c\u5219\u5fc5\u987b \u6b64\u5916\uff0c\u8bf7\u9075\u5faa\u4fdd\u62a4\u60a8\u7684 B2C \u5546\u52a1\u89e3\u51b3\u65b9\u6848\u4e2d\u6240\u8ff0\u7684\u8981\u6c42\u3002\u8fd9\u4e9b B2C Commerce \u7279\u5b9a\u8981\u6c42\u662f\u53e6\u5916\u7684 \u5230\u4e00\u822c AppExchange \u8981\u6c42\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Tableau Accelerator \u5b89\u5168\u8981\u6c42<\/h2>\n\n\n\n<p>\u5982\u679c\u60a8\u7684\u5408\u4f5c\u4f19\u4f34\u5e94\u7528\u7a0b\u5e8f\u662f Tableau \u52a0\u901f\u5668\uff0c\u60a8\u8fd8\u5fc5\u987b\u9075\u5faa\u8fd9\u4e9b\u8981\u6c42\u00a0\u5728\u4fdd\u62a4\u60a8\u7684 Tableau \u52a0\u901f\u5668\u4e2d\u8fdb\u884c\u4e86\u4ecb\u7ecd\u3002\u8fd9\u4e9b Tableau \u7279\u5b9a\u8981\u6c42 \u662f\u5bf9\u4e00\u822c AppExchange \u8981\u6c42\u7684\u8865\u5145\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u5b89\u5168\u7b56\u7565\u8981\u6c42 \u8981\u6c42<\/strong><br>\uff1a\u5728 AppExchange \u4e0a\u5217\u51fa\u89e3\u51b3\u65b9\u6848\u4e4b\u524d\uff0c\u60a8\u5fc5\u987b\u6709\u4e00\u4e2a\u5b89\u5168\u8ba1\u5212\u6765\u8bc1\u660e\u8d35\u516c\u53f8\u5bf9\u5b89\u5168\u7684\u627f\u8bfa\u3002\u6b64\u5916\uff0c\u4e3a\u4e86\u5e2e\u52a9\u5ba2\u6237\u8bc4\u4f30\u89e3\u51b3\u65b9\u6848\u7684\u8d28\u91cf\uff0c\u5fc5\u987b\u4e0e\u4ed6\u4eec\u5171\u4eab\u8ba1\u5212\u4fe1\u606f\u3002<\/li>\n\n\n\n<li><strong>\u9632\u6b62\u5b89\u5168\u7f16\u7801\u8fdd\u89c4<\/strong><br>AppExchange \u4e0a\u5217\u51fa\u7684\u6240\u6709\u89e3\u51b3\u65b9\u6848\u90fd\u5fc5\u987b\u9075\u5b88\u8fd9\u4e9b AppExchange \u5b89\u5168\u8981\u6c42\u3002\u4e86\u89e3\u54ea\u4e9b\u8fdd\u89c4\u884c\u4e3a\u6700\u6709\u53ef\u80fd\u51fa\u73b0\u5728 AppExchange \u89e3\u51b3\u65b9\u6848\u4e2d\uff0c\u5b83\u4eec\u4e3a\u4ec0\u4e48\u4f1a\u5e26\u6765\u5b89\u5168\u98ce\u9669\uff0c\u4ee5\u53ca\u5982\u4f55\u521b\u5efa\u6709\u52a9\u4e8e\u907f\u514d\u8fd9\u4e9b\u98ce\u9669\u7684\u89e3\u51b3\u65b9\u6848\u3002<\/li>\n\n\n\n<li>\u4fdd\u62a4\u60a8\u7684 B2C \u5546\u52a1\u89e3\u51b3\u65b9\u6848<br>AppExchange \u4e0a\u5217\u51fa\u7684\u6240\u6709\u00a0<strong>B2C<\/strong>\u00a0Commerce Cartridge \u548c Headless \u96c6\u6210\u90fd\u5fc5\u987b\u9075\u5b88\u8fd9\u4e9b\u8981\u6c42\u3002<\/li>\n\n\n\n<li>\u4fdd\u62a4\u60a8\u7684 Tableau \u52a0\u901f\u5668 AppExchange \u4e0a\u5217\u51fa\u7684<br>\u6240\u6709\u00a0<strong>Tableau \u52a0\u901f\u5668<\/strong>\u90fd\u5fc5\u987b\u9075\u5b88\u8fd9\u4e9b\u8981\u6c42\u3002<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">\u5b89\u5168\u7b56\u7565\u8981\u6c42<\/h2>\n\n\n\n<p>\u8981\u6c42\uff1a\u5728 AppExchange \u4e0a\u5217\u51fa\u89e3\u51b3\u65b9\u6848\u4e4b\u524d\uff0c\u5fc5\u987b\u5177\u6709\u5b89\u5168\u6027 \u8bc1\u660e\u8d35\u516c\u53f8\u5bf9\u5b89\u5168\u7684\u627f\u8bfa\u7684\u8ba1\u5212\u3002\u53e6\u5916\uff0c\u4e3a\u4e86\u5e2e\u52a9\u5ba2\u6237 \u8bc4\u4f30\u89e3\u51b3\u65b9\u6848\u7684\u8d28\u91cf\uff0c\u60a8\u5fc5\u987b\u4e0e\u4ed6\u4eec\u5171\u4eab\u60a8\u7684\u8ba1\u5212\u4fe1\u606f\u3002<\/p>\n\n\n\n<p>\u5efa\u8bae\uff1a\u6211\u4eec\u5efa\u8bae\u5728\u7a0b\u5e8f\u4e2d\u5305\u542b\u8fd9\u4e9b\u5143\u7d20\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u6307\u5b9a\u5b89\u5168\u4e13\u5bb6<\/h2>\n\n\n\n<p>\u96c6\u6210\u5b89\u5168\u6027\u540e\uff0c\u53ef\u4ee5\u66f4\u8f7b\u677e\u5730\u4fdd\u62a4\u89e3\u51b3\u65b9\u6848\u514d\u53d7\u5b89\u5168\u5a01\u80c1 \u8003\u8651\u8fdb\u5165\u5f00\u53d1\u7684\u5404\u4e2a\u9636\u6bb5\u3002\u786e\u4fdd\u60a8\u7684 \u89e3\u51b3\u65b9\u6848\u9075\u5faa\u5b89\u5168\u51c6\u5219\uff0c\u5373\u4e3a\u60a8\u7684\u5f00\u53d1\u6307\u5b9a\u4e00\u540d\u5b89\u5168\u4e13\u5bb6 \u56e2\u961f\u3002\u8ba9\u60a8\u7684\u6574\u4e2a\u5f00\u53d1\u56e2\u961f\u4e0e\u5b89\u5168\u4e13\u5bb6\u534f\u4f5c\u5b8c\u6210\u6240\u6709\u5de5\u4f5c \u5f00\u53d1\u9636\u6bb5\uff1a\u8bbe\u8ba1\u3001\u5b9e\u73b0\u548c\u6d4b\u8bd5\u3002\u63a8\u8fdf\u5b89\u68c0 \u5728\u5f00\u53d1\u7684\u6700\u540e\u9636\u6bb5\u4e4b\u524d\u7684\u6ce8\u610f\u4e8b\u9879\u4f1a\u589e\u52a0\u60a8\u7684\u56e2\u961f\u7684\u53ef\u80fd\u6027 \u5728\u4e0d\u77e5\u4e0d\u89c9\u4e2d\u4f20\u64ad\u5b89\u5168\u8fdd\u89c4\u884c\u4e3a\u3002\u5b9a\u671f\u534f\u4f5c\u53ef\u9632\u6b62 \u4e0d\u5fc5\u8981\u5730\u79ef\u7d2f\u5b89\u5168\u8fdd\u89c4\u884c\u4e3a\uff0c\u5e76\u6709\u52a9\u4e8e\u907f\u514d\u51c6\u5907 \u6210\u529f\u63d0\u4ea4 AppExchange \u5b89\u5168\u5ba1\u67e5\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u5b9e\u65bd\u5b89\u5168\u7b56\u7565<\/h2>\n\n\n\n<p>\u5236\u5b9a\u4f01\u4e1a\u5b89\u5168\u7b56\u7565\uff0c\u8be6\u7ec6\u8bf4\u660e\u8d35\u516c\u53f8\u5982\u4f55\u4fdd\u62a4\u5ba2\u6237\u8d44\u4ea7\uff0c \u4f8b\u5982\u7528\u6237\u6570\u636e\u3002\u544a\u77e5\u5ba2\u6237\u4ed6\u4eec\u53ef\u4ee5\u91c7\u53d6\u54ea\u4e9b\u6d3b\u52a8\u6765\u5e2e\u52a9\u786e\u4fdd \u4ece\u5934\u5230\u5c3e\u7684\u89e3\u51b3\u65b9\u6848\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u5217\u51fa\u670d\u52a1\u548c\u9879\u76ee<\/h2>\n\n\n\n<p>\u5217\u51fa\u89e3\u51b3\u65b9\u6848\u4e2d\u5305\u542b\u7684\u670d\u52a1\u548c\u9879\u76ee\uff0c\u4f8b\u5982 Web \u548c\u79fb\u52a8\u89e3\u51b3\u65b9\u6848\u3002 Web \u670d\u52a1\u3001API \u548c SDK\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u6e05\u70b9\u7b2c\u4e09\u65b9\u5e93<\/h2>\n\n\n\n<p>\u4fdd\u7559\u7b2c\u4e09\u65b9\u5e93\u548c \u6b63\u786e\u64cd\u4f5c\u7684\u89e3\u51b3\u65b9\u6848\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u521b\u5efa\u67b6\u6784\u56fe<\/h2>\n\n\n\n<p>\u63d0\u4f9b\u663e\u793a\u6570\u636e\u63a5\u89e6\u70b9\u3001\u4fe1\u606f\u6d41\u3001 \u8eab\u4efd\u9a8c\u8bc1\u3001\u6388\u6743\u548c\u5176\u4ed6\u5b89\u5168\u63a7\u5236\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u5217\u51fa\u8ba4\u8bc1<\/h2>\n\n\n\n<p>\u5171\u4eab\u6240\u6709\u9002\u7528\u7684\u8ba4\u8bc1\u62a5\u544a\uff0c\u4f8b\u5982\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>HIPAA\uff1a\u5065\u5eb7\u4fdd\u9669\u6d41\u901a\u4e0e\u8d23\u4efb\u6cd5\u6848<\/li>\n\n\n\n<li>PCI DSS\uff1a\u652f\u4ed8\u5361\u884c\u4e1a\u6570\u636e\u5b89\u5168\u6807\u51c6<\/li>\n\n\n\n<li>SOC 2\uff1a\u7cfb\u7edf\u548c\u7ec4\u7ec7\u63a7\u5236 \u7ba1\u7406\u5ba2\u6237\u6570\u636e\u7684 2 \u4e2a\u6807\u51c6<\/li>\n\n\n\n<li>ISO27001\uff1a\u4fe1\u606f\u5b89\u5168\u7ba1\u7406<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">\u83b7\u53d6\u7b2c\u4e09\u65b9\u5ba1\u6838<\/h2>\n\n\n\n<p>\u8ba9\u72ec\u7acb\u7684\u7b2c\u4e09\u65b9\u8fdb\u884c\u5b89\u5168\u5ba1\u8ba1\u3002\u4e0e\u60a8\u7684\u5206\u4eab\u6458\u8981 \u5ba2\u6237\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u6587\u6863\u5b89\u5168\u4fdd\u8bc1\u6d3b\u52a8<\/h2>\n\n\n\n<p>\u8bb0\u5f55\u516c\u53f8\u7ea7\u522b\u7684\u5b89\u5168\u4fdd\u969c\u6d3b\u52a8\uff0c\u5305\u62ec\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u8f6f\u4ef6\u5f00\u53d1\u751f\u547d\u5468\u671f \uff08SDLC\uff09 \u65b9\u6cd5<\/li>\n\n\n\n<li>\u6f0f\u6d1e\u7ba1\u7406<\/li>\n\n\n\n<li>\u4fee\u6b63\u670d\u52a1\u7ea7\u522b\u534f\u8bae \uff08SLA\uff09<\/li>\n\n\n\n<li>\u4f9b\u5e94\u5546\u548c\u4f9d\u8d56\u5b89\u5168\u8ba1\u5212<\/li>\n\n\n\n<li>\u5b89\u5168\u610f\u8bc6\u57f9\u8bad<\/li>\n\n\n\n<li>\u5b89\u5168\u6f0f\u6d1e\u54cd\u5e94\u7a0b\u5e8f<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">\u5217\u51fa\u654f\u611f\u6570\u636e<\/h2>\n\n\n\n<p>\u5217\u51fa\u89e3\u51b3\u65b9\u6848\u5904\u7406\u6216\u5b58\u50a8\u7684\u6240\u6709\u654f\u611f\u6570\u636e\uff0c\u4f8b\u5982\u4ed8\u6b3e\u65b9\u5f0f \u6570\u636e\u3001\u4e2a\u4eba\u6570\u636e\u548c\u5065\u5eb7\u6570\u636e\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u62ab\u9732\u6570\u636e\u5b58\u50a8\u4f4d\u7f6e\u548c\u63d0\u4f9b\u5546<\/h2>\n\n\n\n<p>\u5982\u679c\u89e3\u51b3\u65b9\u6848\u5b58\u50a8\u6216\u5904\u7406\u53d7\u7ba1\u5236\u7684\u6570\u636e\uff0c\u4f8b\u5982\u4e2a\u4eba\u8eab\u4efd\u6570\u636e \u548c\u5065\u5eb7\u6570\u636e\uff0c\u62ab\u9732\u6570\u636e\u5b58\u50a8\u4f4d\u7f6e\u5217\u8868\u3002\u786e\u5b9a\u56fd\u5bb6\/\u5730\u533a\u548c\u63d0\u4f9b\u5546 \u4f8b\u5982 Amazon Web Services \uff08AWS\uff09\u3001Azure \u548c Google Cloud Platform \uff08GCP\uff09\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u8bc6\u522b\u7b2c\u4e09\u65b9\u6570\u636e\u5171\u4eab<\/h2>\n\n\n\n<p>\u63d0\u4f9b\u60a8\u4e0e\u4e4b\u5171\u4eab\u5ba2\u6237\u6570\u636e\u7684\u7b2c\u4e09\u65b9\u4f9b\u5e94\u5546\u5217\u8868\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u5206\u4eab\u8054\u7cfb\u65b9\u5f0f<\/h2>\n\n\n\n<p>\u53d1\u5e03\u8054\u7cfb\u4fe1\u606f\uff0c\u4ee5\u4fbf\u5ba2\u6237\u8f7b\u677e\u83b7\u5f97\u652f\u6301\u548c\u62a5\u544a \u5b89\u5168\u4e8b\u4ef6\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u9632\u6b62\u5b89\u5168\u7f16\u7801\u8fdd\u89c4<\/h2>\n\n\n\n<p>AppExchange \u4e0a\u5217\u51fa\u7684\u6240\u6709\u89e3\u51b3\u65b9\u6848\u90fd\u5fc5\u987b\u9075\u5b88\u8fd9\u4e9b AppExchange \u5b89\u5168\u6027 \u8981\u6c42\u3002\u4e86\u89e3\u54ea\u4e9b\u8fdd\u89c4\u884c\u4e3a\u6700\u6709\u53ef\u80fd\u51fa\u73b0\u5728 AppExchange \u89e3\u51b3\u65b9\u6848\u4e2d\uff0c\u4ee5\u53ca\u4e3a\u4ec0\u4e48\u4f1a\u51fa\u73b0\u8fd9\u4e9b\u8fdd\u89c4\u884c\u4e3a \u6784\u6210\u5b89\u5168\u98ce\u9669\uff0c\u4ee5\u53ca\u5982\u4f55\u521b\u5efa\u6709\u52a9\u4e8e\u907f\u514d\u8fd9\u4e9b\u98ce\u9669\u7684\u89e3\u51b3\u65b9\u6848\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\u4ece\u7b2c\u4e09\u65b9\u7ec8\u7ed3\u70b9<\/strong><br>\u52a0\u8f7d JavaScript \u6587\u4ef6 \u907f\u514d\u4ece\u5185\u5bb9\u5206\u53d1\u7f51\u7edc \uff08CDN\uff09 \u52a8\u6001\u52a0\u8f7d\u7b2c\u4e09\u65b9 JavaScript \u6587\u4ef6\u3002\u76f8\u53cd\uff0c\u8bf7\u4ece\u5305\u7684\u9759\u6001\u8d44\u6e90\u6587\u4ef6\u5939\u4e2d\u52a0\u8f7d\u4ee3\u7801\u3002<\/li>\n\n\n\n<li><strong>\u5728 Lightning \u7ec4\u4ef6<\/strong><br>\u4e2d\u52a0\u8f7d\u7b2c\u4e09\u65b9 CSS \u5305\u62ec\u7ea7\u8054\u6837\u5f0f\u8868 \uff08CSS\uff09 \u548c\u5176\u4ed6\u9759\u6001\u8d44\u6e90\u4e2d\u7684\u8d44\u6e90\uff0c\u800c\u4e0d\u662f\u4ece\u7b2c\u4e09\u65b9\u52a0\u8f7d\u3002<\/li>\n\n\n\n<li><strong>\u4f7f\u7528 CSS \u5916\u90e8\u7ec4\u4ef6<\/strong><br>Salesforce Platform \u8bd5\u56fe\u786e\u4fdd\u6bcf\u4e2a\u547d\u540d\u7a7a\u95f4\u90fd\u662f\u4e00\u4e2a\u9694\u79bb\u7684\u6c99\u76d2\uff0c\u4f46\u4e0d\u80fd\u59cb\u7ec8\u4fdd\u8bc1\u9694\u79bb\u3002\u5982\u679c\u53d1\u751f\u547d\u540d\u7a7a\u95f4\u9694\u79bb\u6f0f\u6d1e\uff0c\u4e00\u4e2a\u7ec4\u4ef6\u53ef\u80fd\u4f1a\u7a83\u53d6\u53e6\u4e00\u4e2a\u7ec4\u4ef6\u7684\u70b9\u51fb\uff0c\u6216\u4ee5\u5176\u4ed6\u65b9\u5f0f\u5e72\u6270\u53e6\u4e00\u4e2a\u7ec4\u4ef6\u7684\u9884\u671f\u7528\u9014\u3002\u4e3a\u4e86\u9632\u6b62\u8fd9\u79cd\u7c7b\u578b\u7684\u6ee5\u7528\uff0c\u8bf7\u4e0d\u8981\u4f7f\u7528\u5df2\u77e5\u4e0e\u7ec4\u4ef6\u4e2d\u7684\u6837\u5f0f\u9694\u79bb\u4e0d\u517c\u5bb9\u7684 CSS \u6307\u4ee4\u3002<\/li>\n\n\n\n<li><strong>\u5728 Salesforce \u57df<\/strong><br>\u4e2d\u8fd0\u884c JavaScript \u6765\u81ea\u591a\u4e2a\u4f9b\u5e94\u5546\u7684 JavaScript \u4ee3\u7801\u53ef\u4ee5\u5728\u540c\u4e00\u6e90\u4e2d\u8fd0\u884c\u3002\u4e3a\u4e86\u9632\u6b62\u4ee3\u7801\u5e72\u6270\uff0c\u4f9b\u5e94\u5546\u7684 JavaScript \u4ee3\u7801\u88ab\u6c99\u76d2\u5316\u3002\u4e0d\u8981\u5c1d\u8bd5\u8df3\u51fa\u6c99\u76d2\u6216\u5728\u6e90\u4e4b\u5916\u8fd0\u884c\u4ee3\u7801\u3002\u4f7f\u7528 Visualforce\u3001Aura \u6216 Lightning Web \u7ec4\u4ef6\uff0c\u5b83\u4eec\u5728\u6b63\u786e\u7684\u6e90\u4e2d\u8fd0\u884c\u3002<\/li>\n\n\n\n<li>\u8c03\u8bd5<br><strong>\u65f6\u66b4\u9732\u673a\u5bc6\u6570\u636e<\/strong>\u00a0\u5728\u751f\u4ea7\u73af\u5883\u4e2d\uff0c\u4f7f\u7528 debug \u8bed\u53e5\u8bb0\u5f55\u673a\u5bc6\u6570\u636e\u662f\u4e00\u4e2a\u5b89\u5168\u6f0f\u6d1e\u3002\u4e0d\u8981\u5728\u751f\u4ea7\u73af\u5883\u4e2d\u8bb0\u5f55\u673a\u5bc6\u6570\u636e\u3001\u654f\u611f\u4fe1\u606f\u3001\u5bc6\u7801\u3001\u5bc6\u94a5\u6216\u5806\u6808\u8ddf\u8e2a\u3002\u7f16\u8f91\u6570\u636e\u6216\u4ece\u65e5\u5fd7\u4e2d\u7701\u7565\u6570\u636e\u3002<\/li>\n\n\n\n<li><strong>\u4e0d\u5b89\u5168\u5730\u5b58\u50a8\u654f\u611f\u6570\u636e<\/strong>\u00a0\u5f53\u60a8\u4ece Salesforce Platform \u5bfc\u51fa\u6570\u636e\u4ee5\u53ca\u5728\u5e73\u53f0\u4e2d\u5b58\u50a8\u673a\u5bc6\u6570\u636e\u65f6\uff0c<br>\u8bf7\u9075\u5faa\u4f01\u4e1a\u5b89\u5168\u6807\u51c6\u3002<\/li>\n\n\n\n<li>\u4f7f\u7528<strong>\u5177\u6709\u5df2\u77e5<\/strong>\u6f0f\u6d1e\u7684\u8f6f\u4ef6<br>\u4f7f\u7528\u8bb0\u5f55\u4e86\u4e0e\u60a8\u7684\u7528\u4f8b\u76f8\u5173\u7684\u5e38\u89c1\u6f0f\u6d1e\u548c\u66b4\u9732 \uff08CVE\uff09 \u7684\u8f6f\u4ef6\u662f\u4e00\u4e2a\u5b89\u5168\u6f0f\u6d1e\u3002\u5982\u679c\u60a8\u7684\u89e3\u51b3\u65b9\u6848\u5b58\u5728\u5df2\u77e5\u6f0f\u6d1e\uff0c\u8bf7\u5728\u5b89\u5168\u8865\u4e01\u53ef\u7528\u65f6\u7acb\u5373\u5bf9\u5176\u8fdb\u884c\u6d4b\u8bd5\u548c\u90e8\u7f72\u3002\u5982\u679c\u60a8\u7684\u89e3\u51b3\u65b9\u6848\u4f7f\u7528\u7684\u8f6f\u4ef6\u5177\u6709\u4e0e\u60a8\u7684\u7528\u4f8b\u65e0\u5173\u7684 CVE \u8bb0\u5f55\u7684\u6f0f\u6d1e\uff0c\u8bf7\u51c6\u5907\u8bef\u62a5\u6587\u6863\u3002<\/li>\n\n\n\n<li><strong>\u5728\u751f\u4ea7\u73af\u5883\u4e2d<\/strong><br>\u4f7f\u7528\u793a\u4f8b\u4ee3\u7801 \u4ec5\u5c06\u793a\u4f8b\u4ee3\u7801\u7528\u4f5c\u51c6\u5907\u5f00\u53d1\u81ea\u5df1\u7684\u5e94\u7528\u7a0b\u5e8f\u7684\u6559\u80b2\u5de5\u5177\u3002\u6784\u5efa\u751f\u4ea7\u4ee3\u7801\u65f6\uff0c\u8bf7\u59cb\u7ec8\u81ea\u5df1\u7f16\u5199\u4ee3\u7801\u3002\u907f\u514d\u4ece\u4e0d\u76f4\u63a5\u63a7\u5236\u7684\u6e90\u590d\u5236\u4ee3\u7801\u3002<\/li>\n\n\n\n<li><strong>\u7ed5\u8fc7\u5bf9\u8c61\u7ea7\u548c\u5b57\u6bb5\u7ea7\u8bbf\u95ee<\/strong>\u8bbe\u7f6e \u8bbe\u8ba1\u89e3\u51b3\u65b9\u6848\u4ee5\u5728\u6807\u51c6\u548c\u81ea\u5b9a\u4e49\u5bf9\u8c61\u4e0a\u5f3a\u5236\u6267\u884c\u7ec4\u7ec7\u7684\u521b\u5efa\u3001\u8bfb\u53d6\u3001\u66f4\u65b0\u548c\u5220\u9664 \uff08CRUD\uff09 \u548c\u5b57\u6bb5\u7ea7\u5b89\u5168\u6027 \uff08FLS\uff09 \u8bbe\u7f6e<br>\u3002<\/li>\n\n\n\n<li>\u7ed5\u8fc7 Apex \u4e2d\u7684\u5171\u4eab\u89c4\u5219 \u5728 Apex<br>\u4ee3\u7801\u4e2d\u5c0a\u91cd\u57fa\u4e8e\u914d\u7f6e\u6587\u4ef6\u7684\u6743\u9650\u3001\u5b57\u6bb5\u7ea7\u5b89\u5168\u6027\u3001<strong>\u5171\u4eab\u89c4\u5219<\/strong>\u548c\u7ec4\u7ec7\u8303\u56f4\u7684\u9ed8\u8ba4\u503c\u3002<\/li>\n\n\n\n<li><strong>\u7531\u4e8e\u6570\u636e\u5e93\u67e5\u8be2\u6784\u9020\u4e0d\u5b89\u5168\u5bfc\u81f4\u7684 SOQL<\/strong>\u00a0\u6ce8\u5165 \u8981\u9632\u6b62 Salesforce \u5bf9\u8c61\u67e5\u8be2\u8bed\u8a00 \uff08SOQL\uff09 \u6ce8\u5165\uff0c\u8bf7\u4f7f\u7528\u7ed1\u5b9a\u53d8\u91cf\u548c\u8f93\u5165\u536b\u751f\u3002<\/li>\n\n\n\n<li>\u8de8\u7ad9\u70b9\u8bf7\u6c42\u4f2a\u9020\u00a0<strong>\u8de8\u7ad9\u70b9\u8bf7\u6c42\u4f2a\u9020<\/strong><br>\uff08CSRF\uff09 \u662f\u4e00\u79cd\u653b\u51fb\uff0c\u5b83\u8feb\u4f7f\u6700\u7ec8\u7528\u6237\u5728\u5176\u7ecf\u8fc7\u8eab\u4efd\u9a8c\u8bc1\u7684 Web \u5e94\u7528\u7a0b\u5e8f\u4f1a\u8bdd\u671f\u95f4\u6267\u884c\u4e0d\u9700\u8981\u7684\u64cd\u4f5c\u3002\u8981\u9632\u6b62 CSRF\uff0c\u8bf7\u4f7f\u7528 \u6216\u901a\u8fc7\u7528\u6237\u64cd\u4f5c\u89e6\u53d1\u72b6\u6001\u66f4\u6539\u3002<samp>confirmationTokenRequired<\/samp><\/li>\n\n\n\n<li>\u6253\u5f00\u91cd\u5b9a\u5411 \u5f53\u5e94\u7528\u7a0b\u5e8f\u5728\u672a\u7ecf\u4efb\u4f55\u9a8c\u8bc1\u7684\u60c5\u51b5\u4e0b\u52a8\u6001<strong>\u91cd\u5b9a\u5411<\/strong><br>\u5230\u7528\u6237\u63a7\u5236\u7684\u53c2\u6570\u503c\u65f6\uff0c\u5c31\u4f1a\u53d1\u751f\u6253\u5f00\u91cd\u5b9a\u5411\u3002\u4f7f\u7528\u786c\u7f16\u7801\u91cd\u5b9a\u5411\u6765\u9632\u6b62\u6253\u5f00\u91cd\u5b9a\u5411\u3002<\/li>\n\n\n\n<li>Lightning LockerService\u00a0<strong>\u5df2\u7981\u7528<\/strong><br>Lightning LockerService \u662f Lightning \u4ee3\u7801\u7684\u4e00\u9879\u5173\u952e\u5b89\u5168\u529f\u80fd\u3002\u5b83\u63d0\u4f9b\u7ec4\u4ef6\u9694\u79bb\uff0c\u5141\u8bb8\u6765\u81ea\u591a\u4e2a\u6765\u6e90\u7684\u4ee3\u7801\u4f7f\u7528\u5b89\u5168\u3001\u6807\u51c6\u7684 API \u548c\u4e8b\u4ef6\u673a\u5236\u6267\u884c\u548c\u4ea4\u4e92\u3002\u4e3a\u5305\u542b Lightning \u7ec4\u4ef6\u6216\u5e94\u7528\u7a0b\u5e8f\u7684 AppExchange \u8f6f\u4ef6\u5305\u542f\u7528 Lightning Locker\u3002<\/li>\n\n\n\n<li>Lightning \u7ec4\u4ef6\u4e2d\u7684<strong>\u8f6c\u4e49\u4e0d\u8db3<\/strong>\u00a0\u6346\u7ed1\u5305\u4e2d\u7684\u6bcf\u4e2a\u7ec4\u4ef6\u90fd\u8d1f\u8d23\u6e05\u7406\u7236\u7ec4\u4ef6<br>\u3001\u5e94\u7528\u7a0b\u5e8f\u6216 URL \u53c2\u6570\u63d0\u4f9b\u7ed9\u5b83\u7684\u8f93\u5165\u3002<\/li>\n\n\n\n<li>\u7ec4\u4ef6<br>\u4e2d\u7684\u5f02\u6b65\u4ee3\u7801 \u9ed1\u5ba2\u53ef\u4ee5\u64cd\u7eb5\u5f02<strong>\u6b65\u4ee3\u7801<\/strong>\u7684\u65f6\u5e8f\u6765\u4ea7\u751f\u6076\u610f\u7ed3\u679c\u3002\u82e5\u8981\u4fdd\u7559\u5f53\u524d\u6267\u884c\u4e0a\u4e0b\u6587\uff0c\u8bf7\u5c06\u5f02\u6b65\u51fd\u6570\u8c03\u7528\u6216\u6279\u5904\u7406\u64cd\u4f5c\u5305\u88c5\u5230\u5355\u4e2a\u8bf7\u6c42\u4e2d\u3002<\/li>\n\n\n\n<li>\u5b89\u5168<strong>\u901a\u4fe1<\/strong><br>\u786e\u4fdd\u53ea\u80fd\u901a\u8fc7\u5b89\u5168\u8fde\u63a5\uff08\u5982 SFTP \u548c HTTPS\uff09\u8bbf\u95ee\u89e3\u51b3\u65b9\u6848\u3002\u907f\u514d\u4f7f\u7528 HTTP \u548c FTP\uff0c\u56e0\u4e3a\u8fd9\u4e9b\u534f\u8bae\u4e0d\u4f1a\u52a0\u5bc6\u901a\u8fc7 Internet \u4f20\u8f93\u7684\u4fe1\u606f\u3002<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">\u4ece\u7b2c\u4e09\u65b9\u7aef\u70b9\u52a0\u8f7d JavaScript \u6587\u4ef6<\/h2>\n\n\n\n<p>\u907f\u514d\u4ece\u5185\u5bb9\u5206\u53d1\u7f51\u7edc\u52a8\u6001\u52a0\u8f7d\u7b2c\u4e09\u65b9 JavaScript \u6587\u4ef6 \uff08CDN\uff09\u3002\u76f8\u53cd\uff0c\u8bf7\u4ece\u5305\u7684\u9759\u6001\u8d44\u6e90\u6587\u4ef6\u5939\u4e2d\u52a0\u8f7d\u4ee3\u7801\u3002\u4ece CDN \u6216\u5176\u4ed6\u7b2c\u4e09\u65b9\u52a8\u6001\u52a0\u8f7d\u7b2c\u4e09\u65b9 JavaScript \u6587\u4ef6\u4e0d\u662f \u5141\u8bb8\u6709\u4e24\u4e2a\u539f\u56e0\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u5fc5\u987b\u4f7f\u7528\u5305\u7248\u672c ID \u5bf9\u6574\u4e2a\u89e3\u51b3\u65b9\u6848\u8fdb\u884c\u7248\u672c\u63a7\u5236\uff0c\u4ee5\u4fbf\u6709\u4e00\u4e2a \u5b9a\u4e49\u660e\u786e\u7684\u4ea7\u54c1\u4ee5\u4f9b\u5ba1\u67e5\u548c\u8ddf\u8e2a\u3002\u5982\u679c\u89e3\u51b3\u65b9\u6848\u4ece \u7b2c\u4e09\u65b9\u7ec8\u7ed3\u70b9\uff0c\u5916\u90e8\u6258\u7ba1\u4ee3\u7801\u53ef\u4ee5\u5728\u6ca1\u6709\u5305\u7684\u60c5\u51b5\u4e0b\u8fdb\u884c\u66f4\u6539 \u7248\u672c ID \u66f4\u6539\u3002\u7ba1\u7406\u5458\u548c Salesforce \u5b89\u5168\u5ba1\u67e5\u56e2\u961f\u4e0d\u662f \u610f\u8bc6\u5230\u4e86\u8fd9\u4e00\u53d8\u5316\u3002Salesforce \u65e0\u6cd5\u786e\u4fdd\u7b2c\u4e09\u65b9\u4ee3\u7801\u7ee7\u7eed \u9632\u8303\u6700\u65b0\u7684\u5b89\u5168\u6f0f\u6d1e\u3002\u786e\u4fdd\u4ee3\u7801\u662f \u53d7\u5236\u4e8e\u5305\u7248\u672c\u63a7\u5236\uff0c\u4ece\u9759\u6001\u52a8\u6001\u52a0\u8f7d\u4ee3\u7801 resources \u6587\u4ef6\u5939\u3002\u5982\u679c\u4e0d\u66f4\u6539 \u8f6f\u4ef6\u5305\u7248\u672c ID\u3002\u53e6\u5916\uff0c\u7248\u672c ID \u66f4\u6539\u4f1a\u5411\u7ba1\u7406\u5458\u53d1\u51fa\u4fe1\u53f7\uff0c\u5e76\u4e14 AppExchange \u5b89\u5168\u56e2\u961f\u8ba4\u4e3a\u4ee3\u7801\u5df2\u66f4\u6539\u3002<\/li>\n\n\n\n<li>\u4ece\u7b2c\u4e09\u65b9\u7ec8\u7ed3\u70b9\u52a8\u6001\u52a0\u8f7d\u4ee3\u7801\u53ef\u6388\u4e88\u8be5\u7ec8\u7ed3\u70b9\u529f\u80fd \u5c06\u4ee3\u7801\u6ce8\u5165\u5230\u5b89\u88c5\u8f6f\u4ef6\u5305\u7684\u4efb\u4f55 Salesforce \u7ec4\u7ec7\u4e2d\u3002\u53ea \u4ece Salesforce \u6279\u51c6\u7684 CDN \u52a8\u6001\u52a0\u8f7d\u4ee3\u7801\uff0c\u7531 Salesforce \u7ba1\u7406\u4ee3\u7801\uff0c \u800c\u4e0d\u662f\u5408\u4f5c\u4f19\u4f34\u3002<\/li>\n<\/ul>\n\n\n\n<p>\u6982\u62ec\u5730\u8bf4\uff0c\u89e3\u51b3\u65b9\u6848\u662f\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u5c06\u7b2c\u4e09\u65b9 JavaScript \u6587\u4ef6\u4fdd\u5b58\u5728\u9759\u6001\u8d44\u6e90\u4e2d\u3002<\/li>\n\n\n\n<li>\u5c06\u8d44\u6e90\u6dfb\u52a0\u5230\u89e3\u51b3\u65b9\u6848\u5305\u4e2d\u3002<\/li>\n\n\n\n<li>\u4ece URL \u52a0\u8f7d\u6bcf\u4e2a JavaScript \u6587\u4ef6\u3002<samp>$Resource<\/samp><\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">Visualforce \u793a\u4f8b<\/h2>\n\n\n\n<p>\u8fd9\u4e9b\u4ee3\u7801\u7247\u6bb5\u63cf\u8ff0\u4e86\u5b89\u5168\u8fdd\u89c4\u4ee5\u53ca\u5982\u4f55\u5728 Apex \u548c for \u4e2d\u4fee\u590d\u5b83 Aura \u4e2d\u7684\u95ea\u7535\u7ec4\u4ef6\u3002\u6b64 Visualforce \u4ee3\u7801\u4e0d\u5b89\u5168\uff0c\u56e0\u4e3a\u52a0\u8f7d\u4e86 jQuery \u6765\u81ea\u7b2c\u4e09\u65b9\u6765\u6e90\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;apex:includescript value=\"https:\/\/code.jquery.com\/jquery-3.2.1.min.js\"\/&gt;<\/code><\/pre>\n\n\n\n<p>\u6b64 Visualforce \u4ee3\u7801\u662f\u5b89\u5168\u7684\uff0c\u56e0\u4e3a\u5b83\u4ece\u9759\u6001\u52a0\u8f7d jQuery \u7684\u4e00\u4e2a\u7248\u672c resources \u6587\u4ef6\u5939\u3002<\/p>\n\n\n\n<p><samp>$Resource<\/samp><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;apex:includeScript value=\"{! $Resource.jQuery }\"\/&gt;<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u5149\u73af\u793a\u4f8b<\/h2>\n\n\n\n<p>\u6b64 Aura \u7ec4\u4ef6\u4ee3\u7801\u4e0d\u5b89\u5168\uff0c\u56e0\u4e3a jQuery \u76f4\u63a5\u4ece\u7b2c\u4e09\u65b9\u52a0\u8f7d \u6e90\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;aura:component&gt;\n   &lt;ltng:require afterScriptsLoaded=\"{!c.initializeUI}\"\n   scripts=\"https:\/\/code.jquery.com\/jquery-2.2.0.min.js\u201d\/&gt;\n&lt;aura:component&gt;<\/code><\/pre>\n\n\n\n<p>\u6b64 Aura \u7ec4\u4ef6\u4ee3\u7801\u662f\u5b89\u5168\u7684\uff0c\u56e0\u4e3a jQuery \u662f\u4ece\u89e3\u51b3\u65b9\u6848\u5305\u52a0\u8f7d\u7684\uff0c\u5e76\u4e14 \u4f7f\u7528 URL \u4f5c\u4e3a\u9759\u6001\u8d44\u6e90\u5f15\u7528\u3002<samp>$Resource<\/samp><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;aura:component&gt;\n   &lt;ltng:require afterScriptsLoaded=\"{!c.initializeUI}\"\n   scripts=\"{!$Resource.jsLibraries + '\/jsLibOne.js'}\"\/&gt;\n&lt;aura:component&gt;<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u5728 Lightning \u7ec4\u4ef6\u4e2d\u52a0\u8f7d\u7b2c\u4e09\u65b9 CSS<\/h2>\n\n\n\n<p>\u5c06\u7ea7\u8054\u6837\u5f0f\u8868 \uff08CSS\uff09 \u548c\u5176\u4ed6\u8d44\u6e90\u5305\u542b\u5728\u9759\u6001\u8d44\u6e90\u4e2d \u800c\u4e0d\u662f\u4ece\u7b2c\u4e09\u65b9\u52a0\u8f7d\u3002<\/p>\n\n\n\n<p>\u5f3a\u5236\u6267\u884c\u6b64\u8981\u6c42\u7684\u539f\u56e0\u4e0e\u4ece\u7b2c\u4e09\u65b9\u7ec8\u7ed3\u70b9\u52a0\u8f7d JavaScript \u6587\u4ef6\u4e2d\u6982\u8ff0\u7684\u539f\u56e0\u76f8\u540c\u3002\u6574\u4e2a \u89e3\u51b3\u65b9\u6848\u5fc5\u987b\u53d7\u7248\u672c\u63a7\u5236\uff0c\u5e76\u4e14\u7ec4\u7ec7\u7ba1\u7406\u5458\u548c Salesforce \u5b89\u5168\u6027 \u5ba1\u6838\u56e2\u961f\u5fc5\u987b\u4e86\u89e3\u8fd9\u4e00\u53d8\u5316\u3002<\/p>\n\n\n\n<p>\u4f7f\u7528\u6807\u7b7e\u52a0\u8f7d\u5916\u90e8 CSS \u8d44\u6e90\u8fdd\u53cd\u4e86\u6b64\u5b89\u5168\u7b56\u7565\u3002<samp>&lt;link&gt;<\/samp>\u6982\u62ec\u5730\u8bf4\uff0c\u89e3\u51b3\u65b9\u6848\u662f\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u5c06\u7b2c\u4e09\u65b9 CSS \u6587\u4ef6\u4fdd\u5b58\u5728\u9759\u6001\u8d44\u6e90\u4e2d\u3002<\/li>\n\n\n\n<li>\u5c06\u8d44\u6e90\u6dfb\u52a0\u5230\u89e3\u51b3\u65b9\u6848\u5305\u4e2d\u3002<\/li>\n\n\n\n<li>\u4f7f\u7528\u6807\u7b7e\u5f15\u7528 CSS \u5728 .cmp \u6216 .app \u6807\u8bb0\u4e2d\u3002<samp>&lt;ltng:require&gt;<\/samp><\/li>\n<\/ol>\n\n\n\n<p>\u6709\u5173\u66f4\u591a\u4fe1\u606f\uff0c\u8bf7\u53c2\u9605\u5728\u00a0Lightning Aura \u7ec4\u4ef6\u5f00\u53d1\u4eba\u5458\u6307\u5357\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u5149\u73af\u793a\u4f8b<\/h2>\n\n\n\n<p>\u8fd9\u4e9b\u4ee3\u7801\u7247\u6bb5\u63cf\u8ff0\u4e86\u5b89\u5168\u8fdd\u89c4\u4ee5\u53ca\u5982\u4f55\u5728 Lightning \u4e2d\u4fee\u590d\u5b83 Aura \u4e2d\u7684\u7ec4\u4ef6\u3002\u6b64 Aura \u7ec4\u4ef6\u4ee3\u7801\u4e0d\u5b89\u5168\uff0c\u56e0\u4e3a\u5b83\u4f7f\u7528\u6807\u7b7e\u6765\u52a0\u8f7d\u5916\u90e8 CSS \u8d44\u6e90\u3002<\/p>\n\n\n\n<p><samp>&lt;link&gt;<\/samp><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;aura:component&gt;\n     &lt;link rel=\"stylesheet\" href=\"https:\/\/example.com\/styles.css\" type=\"text\/css\"&gt;\n&lt;aura:component&gt;<\/code><\/pre>\n\n\n\n<p>\u6b64 Aura \u7ec4\u4ef6\u4ee3\u7801\u4f7f\u7528 \uff0c\u5176\u4e2d \u662f\u5f15\u7528\u4f5c\u4e3a\u9759\u6001\u4e0a\u4f20\u7684\u5916\u90e8 CSS \u8d44\u6e90\u7684\u66f4\u5b89\u5168\u65b9\u6cd5 \u8d44\u6e90\u3002<\/p>\n\n\n\n<p><samp>&lt;ltng:require&gt;<\/samp><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;aura:component&gt;\n    &lt;ltng:require styles=\"{!$Resource.SLDSv1 + '\/assets\/styles\/lightning-design-system-ltng.css'}\" \/&gt;\n&lt;\/aura:component&gt;<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u4f7f\u7528 CSS \u5916\u90e8\u7ec4\u4ef6<\/h2>\n\n\n\n<p>Salesforce Platform \u5c1d\u8bd5\u786e\u4fdd\u6bcf\u4e2a\u547d\u540d\u7a7a\u95f4\u90fd\u662f\u4e00\u4e2a\u9694\u79bb\u7684\u6c99\u76d2\uff0c\u4f46 \u9694\u79bb\u5e76\u4e0d\u603b\u662f\u5f97\u5230\u4fdd\u8bc1\u3002\u5728\u53d1\u751f\u547d\u540d\u7a7a\u95f4\u9694\u79bb\u6f0f\u6d1e\u65f6\uff0c\u4e00\u4e2a\u7ec4\u4ef6 \u53ef\u4ee5\u4ece\u53e6\u4e00\u4e2a\u7ec4\u4ef6\u7a83\u53d6\u70b9\u51fb\uff0c\u6216\u4ee5\u5176\u4ed6\u65b9\u5f0f\u5e72\u6270\u53e6\u4e00\u4e2a\u7ec4\u4ef6\u7684 \u6709\u53ef\u80fd\u7684\u7528\u9014\u3002\u4e3a\u4e86\u9632\u6b62\u8fd9\u79cd\u7c7b\u578b\u7684\u6ee5\u7528\uff0c\u4e0d\u8981\u4f7f\u7528\u5df2\u77e5\u4e0d\u517c\u5bb9\u7684CSS\u6307\u4ee4 \u5728\u7ec4\u4ef6\u4e2d\u5b9e\u73b0\u6837\u5f0f\u9694\u79bb\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">CSS \u793a\u4f8b<\/h2>\n\n\n\n<p>\u6b64 CSS \u4ee3\u7801\u5bb9\u6613\u53d7\u5230\u653b\u51fb\uff0c\u56e0\u4e3a\u5b83\u4f7f\u7528\u4e0d\u517c\u5bb9\u7684\u7edd\u5bf9\u5b9a\u4f4d \u6709\u98ce\u683c \u9694\u79bb\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#some_element {\n   position: absolute;\n   right: 80px;\n   top: 160px;\n}<\/code><\/pre>\n\n\n\n<p>\u6b64 CSS \u4ee3\u7801\u901a\u8fc7\u4f7f\u7528\u76f8\u5bf9 \u5b9a\u4f4d\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#some_element_revised {\n   position: relative;\n   right: 80px;\n   top: 160px;\n}<\/code><\/pre>\n\n\n\n<p>\u6709\u5173\u8be6\u7ec6\u4fe1\u606f\uff0c\u8bf7\u53c2\u9605\u7ec4\u4ef6\u4e2d\u7684 CSS \u63d0\u793a\u00a0Lightning Aura \u7ec4\u4ef6\u5f00\u53d1\u4eba\u5458\u6307\u5357\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u5728 Salesforce \u57df\u4e2d\u8fd0\u884c JavaScript<\/h2>\n\n\n\n<p>\u6765\u81ea\u591a\u4e2a\u4f9b\u5e94\u5546\u7684 JavaScript \u4ee3\u7801\u53ef\u4ee5\u5728\u540c\u4e00\u6e90\u4e2d\u8fd0\u884c\u3002\u9632\u6b62\u4ee3\u7801 \u5e72\u6270\uff0c\u4f9b\u5e94\u5546 JavaScript \u4ee3\u7801\u662f\u6c99\u76d2\u7684\u3002\u4e0d\u8981\u8bd5\u56fe\u51b2\u51fa\u6c99\u76d2\u6216 \u5728\u6e90\u5916\u90e8\u8fd0\u884c\u4ee3\u7801\u3002\u4f7f\u7528 Visualforce\u3001Aura \u6216 Lightning Web \u7ec4\u4ef6\uff0c\u5b83\u4eec\u5728 \u6b63\u786e\u7684\u6765\u6e90\u3002<\/p>\n\n\n\n<p>\u8bb8\u591a\u4e0d\u540c\u7c7b\u578b\u7684 JavaScript \u4ee3\u7801\u5728 Salesforce \u7ec4\u7ec7\u4e2d\u8fd0\u884c\uff0c\u5305\u62ec\u672a\u6253\u5305\u7684 \u5ba2\u6237\u4ee3\u7801\u3001Salesforce \u4ee3\u7801\u548c\u6253\u5305\u4ee3\u7801\u3002\u901a\u5e38\uff0c\u4ee3\u7801\u6765\u81ea\u591a\u4e2a \u65e0\u6cd5\u76f8\u4e92\u534f\u4f5c\u7684\u4f9b\u5e94\u5546\u3002\u5982\u679c\u4ed6\u4eec\u7684\u4ee3\u7801\u8fd0\u884c\u5728\u540c\u4e00\u4e2a \u6765\u6e90\uff0c\u6765\u81ea\u4e00\u4e2a\u4f9b\u5e94\u5546\u7684\u4ee3\u7801\u53ef\u80fd\u4f1a\u5e72\u6270\u5176\u4ed6\u4f9b\u5e94\u5546\u7684\u4ee3\u7801\u3002<\/p>\n\n\n\n<p>\u4e3a\u4e86\u9632\u6b62\u4ee3\u7801\u5e72\u6270\uff0c\u4f9b\u5e94\u5546\u7684 JavaScript \u4ee3\u7801\u88ab\u6c99\u76d2\u5316\u3002\u4f7f\u7528 Visualforce \u89e3\u51b3\u65b9\u6848\u4e2d\uff0cJavaScript \u4ee3\u7801\u5728\u7279\u5b9a\u4e8e\u4f9b\u5e94\u5546\u7684\u552f\u4e00\u6765\u6e90\u4e2d\u8fdb\u884c\u6c99\u76d2\u5316\u3002\u4f7f\u7528\u95ea\u7535 \u89e3\u51b3\u65b9\u6848\u548c Lightning Web \u7ec4\u4ef6 \uff08LWC\uff09\uff0cJavaScript \u88ab\u6c99\u76d2\u5316\u4e3a\u72ec\u7279\u7684\uff0c \u7279\u5b9a\u4e8e\u4f9b\u5e94\u5546\u7684\u50a8\u7269\u67dc\u3002<\/p>\n\n\n\n<p>\u4efb\u4f55\u8bd5\u56fe\u7a81\u7834\u6c99\u76d2\u5e76\u5728\u6e90\u4e4b\u5916\u8fd0\u884c\u4ee3\u7801\u7684\u5c1d\u8bd5\u90fd\u662f\u4e00\u79cd\u5b89\u5168\u7f16\u7801 \u8fdd\u53cd\u3002\u5b89\u5168\u7f16\u7801\u51b2\u7a81\u5305\u62ec\u5c1d\u8bd5\u8fd0\u884c\u4f9b\u5e94\u5546\u7f16\u5199\u7684 JavaScript \u4ee3\u7801 \u5728 Salesforce \u6e90\u4e2d\u901a\u8fc7\u4e3b\u9875\u7ec4\u4ef6\u3001Web \u94fe\u63a5\u6216\u81ea\u5b9a\u4e49\u6309\u94ae\u3002<\/p>\n\n\n\n<p>\u5728\u5927\u591a\u6570\u60c5\u51b5\u4e0b\uff0c\u60a8\u53ef\u4ee5\u4f7f\u7528 Visualforce\u3001Aura \u6216 Lightning Web \u7ec4\u4ef6\uff0c\u5728\u6b63\u786e\u7684\u6e90\u4e2d\u8fd0\u884c\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u5143\u6570\u636e\u793a\u4f8b<\/h2>\n\n\n\n<p>\u6b64\u793a\u4f8b\u4e2d\u7684\u5143\u6570\u636e\u8868\u793a\u81ea\u5b9a\u4e49\u5bf9\u8c61\u3002\u6b64\u81ea\u5b9a\u4e49\u4e2d\u7684 Web \u94fe\u63a5 \u5bf9\u8c61\u662f\u4f7f\u7528\u8bed\u53e5\u5b9a\u4e49\u7684\u3002\u5728\u4e00\u4e2a \u6258\u7ba1\u5305\uff0c\u4f7f\u7528\u662f\u4e00\u79cd\u5b89\u5168\u6027 \u6f0f\u6d1e\uff0c\u56e0\u4e3a\u4f9b\u5e94\u5546\u6b63\u5728\u5c06\u5176\u4ee3\u7801\u6ce8\u5165 Salesforce \u6e90\u3002\u7ba1\u7406 \u5305\u5fc5\u987b\u4fdd\u7559\u5728\u5176\u547d\u540d\u7a7a\u95f4\u6c99\u7bb1\u4e2d\uff0c\u5e76\u4e14\u4e0d\u80fd\u5728\u6b64\u6c99\u7bb1\u4e4b\u5916\u6267\u884c\u811a\u672c \u6c99\u76d2\u3002<\/p>\n\n\n\n<p><samp>REQUIRESCRIPT<\/samp><samp>REQUIRESCRIPT<\/samp><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?xml version=\u201d1.0\u201dencoding=\"UTF-8\"?&gt;\n&lt;CustomObject xmlns=\"http:\/\/soap.sforce.com\/2006\/04\/metadata\"&gt;\n&lt;actionOverrides&gt;\n&lt;actionName&gt;Accept&lt;\/actionName&gt;\n      &lt;type&gt;Default&lt;\/type&gt;\n&lt;\/actionOverrides&gt;\n&lt;webLinks&gt;\n     &lt;fullName&gt;Add_to_List&lt;\/fullName&gt;\n     &lt;openType&gt;onClickJavaScript&lt;\/openType&gt;\n     &lt;url&gt;{!REQUIRESCRIPT(&amp;quot;\/soap\/ajax\/30.0\/connection.js&amp;quot;)}&lt;\/url&gt;\n&lt;\/webLinks&gt;\n...\n&lt;\/CustomObject&gt;<\/code><\/pre>\n\n\n\n<p>\u4e0e\u5176\u5c06\u4ee3\u7801\u76f4\u63a5\u5d4c\u5165\u5230\u5bf9\u8c61\u4e2d\uff0c\u4e0d\u5982\u5728 Visualforce Aura \u7ec4\u4ef6\uff0c\u6216\u4f7f\u7528 Lightning Web \u7ec4\u4ef6\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u8c03\u8bd5\u65f6\u516c\u5f00\u673a\u5bc6\u6570\u636e<\/h2>\n\n\n\n<p>\u5728\u751f\u4ea7\u73af\u5883\u4e2d\uff0c\u4f7f\u7528 debug \u8bed\u53e5\u8bb0\u5f55\u673a\u5bc6\u6570\u636e\u662f\u4e00\u79cd\u5b89\u5168\u6027 \u8106\u5f31\u6027\u3002\u4e0d\u8981\u5728 \u751f\u4ea7\u73af\u5883\u3002\u7f16\u8f91\u6570\u636e\u6216\u4ece\u65e5\u5fd7\u4e2d\u7701\u7565\u6570\u636e\u3002<\/p>\n\n\n\n<p>\u4f7f\u7528 debug \u8bed\u53e5\u6cc4\u9732\u673a\u5bc6\u6570\u636e\u4f1a\u4f7f Salesforce \u7ec4\u7ec7\u7ba1\u7406\u5458\u611f\u5230\u56f0\u96be \u6765\u63a7\u5236\u5bf9\u6570\u636e\u7684\u8bbf\u95ee\u3002\u901a\u5e38\uff0c\u5141\u8bb8\u67e5\u770b\u65e5\u5fd7\u7684\u914d\u7f6e\u6587\u4ef6\u4e0d\u662f \u5141\u8bb8\u67e5\u770b\u673a\u5bc6\u7684\u76f8\u540c\u914d\u7f6e\u6587\u4ef6\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Apex \u793a\u4f8b<\/h2>\n\n\n\n<p>\u5728\u6b64 Apex \u4ee3\u7801\u4e2d\uff0c\u662f\u4e00\u4e2a \u5199\u5165\u8c03\u8bd5\u65e5\u5fd7\u7684\u52a0\u5bc6\u5bc6\u94a5\u3002\u82e5\u8981\u907f\u514d\u6b64\u6f0f\u6d1e\uff0c\u8bf7\u4ece\u751f\u4ea7\u4e2d\u5220\u9664\u8be5\u8bed\u53e5 \u6cd5\u5178\u3002<\/p>\n\n\n\n<p><samp>authenticationToken<\/samp><samp>system.debug<\/samp><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>if (varCount &gt; 0){\n   sensitiveUserData = JSON.serialize(AssignUsrs);\n   ReqSignature = RequestWrapper.generateHmacSHA256Signature(sensitiveUserData, authenticationToken);\n   system.debug('Token---&gt;'+authenticationToken);\n}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u4e0d\u5b89\u5168\u5730\u5b58\u50a8\u654f\u611f\u6570\u636e<\/h2>\n\n\n\n<p>\u4ece Salesforce Platform \u5bfc\u51fa\u6570\u636e\u65f6\u9075\u5faa\u4f01\u4e1a\u5b89\u5168\u6807\u51c6 \u4ee5\u53ca\u5f53\u60a8\u5728\u5e73\u53f0\u4e2d\u5b58\u50a8\u673a\u5bc6\u6570\u636e\u65f6\u3002<\/p>\n\n\n\n<p>\u4e0d\u5b89\u5168\u7684\u654f\u611f\u6570\u636e\u5b58\u50a8\u4e3a\u9ed1\u5ba2\u63d0\u4f9b\u4e86\u8bb8\u591a\u6784\u6210\u5a01\u80c1\u7684\u9014\u5f84\u3002\u4e3a \u4f8b\u5982\uff0c\u7ec4\u7ec7\u7ba1\u7406\u5458\u662f\u552f\u4e00\u5e94\u8be5\u77e5\u9053 API \u5bc6\u94a5\u7684\u4eba\u3002 \u9ed1\u5ba2\u53ef\u4ee5\u4f7f\u7528\u516c\u5f00\u7684\u5bc6\u94a5\u901a\u8fc7\u7ba1\u7406\u901a\u9053\u5c06\u6570\u636e\u4f20\u9001\u5230\u8fdc\u7a0b \u7aef\u70b9\u3002<\/p>\n\n\n\n<p>Salesforce \u4f1a\u8ba4\u771f\u5bf9\u5f85\u6e90\u81ea\u89e3\u51b3\u65b9\u6848\u7684\u6570\u636e\u5a01\u80c1\u3002\u6570\u636e\u6cc4\u9732 \u6216\u56e0\u89e3\u51b3\u65b9\u6848\u4e2d\u7684\u6f0f\u6d1e\u800c\u9020\u6210\u7684\u635f\u5931\u5371\u53ca\u60a8\u4e0e Salesforce\u7684\u3002\u5728\u4ee5\u4e0b\u60c5\u51b5\u4e0b\uff0c\u8bf7\u9075\u5faa<strong>\u5b58\u50a8\u654f\u611f\u6570\u636e<\/strong>\u4e2d\u7684\u4f01\u4e1a\u6807\u51c6\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u4ece Salesforce \u5e73\u53f0\u5bfc\u51fa\u5ba2\u6237\u6570\u636e\u3002<\/li>\n\n\n\n<li>\u5c06\u52a0\u5bc6\u5bc6\u94a5\u3001\u4f1a\u8bdd ID \u6216\u5bc6\u7801\u7b49\u5bc6\u94a5\u5b58\u50a8\u5728 Salesforce\u5e73\u53f0\u3002<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">\u5143\u6570\u636e\u793a\u4f8b<\/h2>\n\n\n\n<p>\u6b64\u793a\u4f8b\u4e2d\u7684\u5143\u6570\u636e\u8868\u793a\u81ea\u5b9a\u4e49\u5bf9\u8c61\u3002\u6b64\u81ea\u5b9a\u4e49\u5bf9\u8c61\u5b9a\u4e49 \u4e0d\u5b89\u5168\uff0c\u56e0\u4e3a API \u7684\u6807\u8bb0 key \u5b57\u6bb5\u8bbe\u7f6e\u4e3a \u3002\u8be5\u5b57\u6bb5\u53ef\u4ee5\u5728 \u5e73\u539f \u53d1\u77ed\u4fe1\u3002<\/p>\n\n\n\n<p><samp>&lt;visibility&gt;<\/samp><samp>Public<\/samp><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;CustomObject xmlns=\"http:\/\/soap.sforce.com\/2006\/04\/metadata\"&gt;\n   &lt;fields&gt;\n        &lt;fullName&gt;apiKey__c&lt;\/fullName&gt;\n        &lt;externalId&gt;false&lt;\/externalId&gt;\n        &lt;fieldManageability&gt;DeveloperControlled&lt;\/fieldManageability&gt;\n        &lt;label&gt;apiKey&lt;\/label&gt;\n        &lt;length&gt;50&lt;\/length&gt;\n        &lt;required&gt;false&lt;\/required&gt;\n        &lt;type&gt;Text&lt;\/type&gt;\n        &lt;unique&gt;false&lt;\/unique&gt;\n   &lt;\/fields&gt;\n   &lt;label&gt;Phone Verify Setting&lt;\/label&gt;\n   &lt;pluralLabel&gt;Phone Verify Settings&lt;\/pluralLabel&gt;\n   &lt;visibility&gt;Public&lt;\/visibility&gt;\n&lt;\/CustomObject&gt;<\/code><\/pre>\n\n\n\n<p>\u5c06\u5bc6\u94a5\u5b58\u50a8\u5728\u81ea\u5b9a\u4e49\u5bf9\u8c61\uff08\u5982 API \u5bc6\u94a5\uff09\u4e2d\u65f6\uff0c\u8bf7\u5bf9\u5176\u8fdb\u884c\u52a0\u5bc6\u3002\u5b58\u50a8 \u52a0\u5bc6\u5bc6\u94a5\u5206\u522b\u5728\u53d7\u4fdd\u62a4\u7684\u81ea\u5b9a\u4e49\u8bbe\u7f6e\u6216\u53d7\u4fdd\u62a4\u7684\u81ea\u5b9a\u4e49\u5143\u6570\u636e API \u4e2d \u7530\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u4f7f\u7528\u5177\u6709\u5df2\u77e5\u6f0f\u6d1e\u7684\u8f6f\u4ef6<\/h2>\n\n\n\n<p>\u4f7f\u7528\u8bb0\u5f55\u4e86\u5e38\u89c1\u6f0f\u6d1e\u548c\u66b4\u9732 \uff08CVE\uff09 \u76f8\u5173\u6f0f\u6d1e\u7684\u8f6f\u4ef6 \u60a8\u7684\u7528\u4f8b\u662f\u4e00\u4e2a\u5b89\u5168\u6f0f\u6d1e\u3002\u5982\u679c\u89e3\u51b3\u65b9\u6848\u5b58\u5728\u5df2\u77e5\u6f0f\u6d1e\uff0c\u8bf7\u8fdb\u884c\u6d4b\u8bd5 \u5e76\u5728\u5b89\u5168\u8865\u4e01\u53ef\u7528\u65f6\u7acb\u5373\u90e8\u7f72\u5b83\u4eec\u3002\u5982\u679c\u60a8\u7684\u89e3\u51b3\u65b9\u6848\u4f7f\u7528\u4ee5\u4e0b\u8f6f\u4ef6\uff1a \u5177\u6709 CVE \u8bb0\u5f55\u7684\u4e0e\u60a8\u7684\u7528\u4f8b\u65e0\u5173\u7684\u6f0f\u6d1e\uff0c\u8bf7\u51c6\u5907\u8bef\u62a5 \u6587\u6863\u3002<\/p>\n\n\n\n<p>\u9ed1\u5ba2\u53ef\u4ee5\u5feb\u901f\u653b\u51fb\u5df2\u62ab\u9732\u7684\u8f6f\u4ef6\u6f0f\u6d1e\u3002\u5927\u591a\u6570\u4f9b\u5e94\u5546\u63d0\u4f9b \u9488\u5bf9\u5176\u8f6f\u4ef6\u4e2d\u53d1\u73b0\u7684\u6f0f\u6d1e\u8fdb\u884c\u4fee\u8865\u6216\u66f4\u65b0\u3002\u8981\u4e86\u89e3\u60a8\u7684 \u89e3\u51b3\u65b9\u6848\u4f7f\u7528\u5177\u6709\u5df2\u77e5\u6f0f\u6d1e\u7684\u8f6f\u4ef6\uff0c\u8bf7\u68c0\u67e5\u5e38\u89c1\u6f0f\u6d1e\u548c\u62ab\u9732 \uff08CVE\uff09 \u6570\u636e\u5e93\u3002<\/p>\n\n\n\n<p>\u5e94\u7528\u4e0e\u89e3\u51b3\u65b9\u6848\u7528\u4f8b\u76f8\u5173\u7684\u6240\u6709\u4fee\u8865\u7a0b\u5e8f\u6216\u66f4\u65b0\u3002\u5982\u679c\u6f0f\u6d1e \u4e0e\u60a8\u7684\u4f7f\u7528\u6848\u4f8b\u65e0\u5173\uff0c\u5e76\u4e14\u60a8\u6b63\u5728\u4e3a AppExchange \u51c6\u5907\u89e3\u51b3\u65b9\u6848 \u5b89\u5168\u5ba1\u67e5\uff0c\u5c06\u5176\u8bb0\u5f55\u4e3a\u8bef\u62a5\u3002\u89e3\u91ca\u4e3a\u4ec0\u4e48\u5b83\u5bf9\u4f60\u7684\u89e3\u51b3\u65b9\u6848\u662f\u5b89\u5168\u7684 \u4ee5\u4f7f\u7528\u6613\u53d7\u653b\u51fb\u7684\u8f6f\u4ef6\u3002\u6211\u4eec\u7684\u5b89\u5168\u5ba1\u67e5\u56e2\u961f\u5728\u505a\u51fa\u51b3\u5b9a\u65f6\u4f1a\u4f7f\u7528\u6b64\u4fe1\u606f \u662f\u5426\u6279\u51c6\u5728\u89e3\u51b3\u65b9\u6848\u4e2d\u4f7f\u7528\u8be5\u8f6f\u4ef6\u3002\u6709\u5173\u8be6\u7ec6\u4fe1\u606f\uff0c\u8bf7\u53c2\u9605\u8bef\u62a5\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u5728\u751f\u4ea7\u73af\u5883\u4e2d\u4f7f\u7528\u793a\u4f8b\u4ee3\u7801<\/h2>\n\n\n\n<p>\u4ec5\u4f7f\u7528\u793a\u4f8b\u4ee3\u7801\u4f5c\u4e3a\u6559\u80b2\u5de5\u5177\uff0c\u4e3a\u5f00\u53d1\u81ea\u5df1\u7684\u4ee3\u7801\u505a\u51c6\u5907 \u5e94\u7528\u3002\u6784\u5efa\u751f\u4ea7\u4ee3\u7801\u65f6\uff0c\u8bf7\u59cb\u7ec8\u81ea\u5df1\u7f16\u5199\u4ee3\u7801\u3002\u907f\u514d\u590d\u5236 \u6765\u81ea\u60a8\u4e0d\u76f4\u63a5\u63a7\u5236\u7684\u6765\u6e90\u7684\u4ee3\u7801\u3002<\/p>\n\n\n\n<p>\u4e92\u8054\u7f51\u4e0a\u7684\u5f00\u53d1\u4eba\u5458\u53ef\u4ee5\u4f7f\u7528\u5f88\u68d2\u7684\u793a\u4f8b\u4ee3\u7801\u3002\u867d\u7136\u5728 \u5b66\u4e60\u6700\u4f73\u5b9e\u8df5\u6216\u65b0\u6280\u672f\uff0c\u4e0d\u8981\u76f4\u63a5\u5728 \u751f\u4ea7\u5305\u3002\u76f4\u63a5\u91cd\u7528\u53ef\u80fd\u4f1a\u5728\u8bb8\u591a\u5305\u4e2d\u4f20\u64ad\u6f0f\u6d1e\uff0c \u65e0\u8bba\u793a\u4f8b\u4ee3\u7801\u4f5c\u8005\u662f\u5426\u6709\u610f\u4e3a\u4e4b\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u7ed5\u8fc7\u5bf9\u8c61\u7ea7\u548c\u5b57\u6bb5\u7ea7\u8bbf\u95ee\u8bbe\u7f6e<\/h2>\n\n\n\n<p>\u8bbe\u8ba1\u89e3\u51b3\u65b9\u6848\u4ee5\u5f3a\u5236\u6267\u884c\u7ec4\u7ec7\u7684\u521b\u5efa\u3001\u8bfb\u53d6\u3001\u66f4\u65b0\u548c\u5220\u9664 \uff08CRUD\uff09 \u548c \u6807\u51c6\u5bf9\u8c61\u548c\u81ea\u5b9a\u4e49\u5bf9\u8c61\u4e0a\u7684\u5b57\u6bb5\u7ea7\u5b89\u5168\u6027 \uff08FLS\uff09 \u8bbe\u7f6e\u3002<\/p>\n\n\n\n<p>\u5728 Salesforce Platform \u4e0a\uff0c\u60a8\u53ef\u4ee5\u5728\u914d\u7f6e\u6587\u4ef6\u548c \u6743\u9650\u96c6\u3002CRUD \u8bbe\u7f6e\u786e\u5b9a\u7528\u6237\u53ef\u4ee5\u8bbf\u95ee\u54ea\u4e9b\u5bf9\u8c61\u3002FLS \u786e\u5b9a \u7528\u6237\u53ef\u4ee5\u8bbf\u95ee\u54ea\u4e9b\u5bf9\u8c61\u5b57\u6bb5\u3002\u4f7f\u7528 CRUD \u548c FLS \u9650\u5236\u5bf9\u6807\u51c6\u548c \u81ea\u5b9a\u4e49\u5bf9\u8c61\u548c\u5355\u4e2a\u5b57\u6bb5\u3002<\/p>\n\n\n\n<p>\u5ba2\u6237\u5e0c\u671b\u4f60\u7684\u89e3\u51b3\u65b9\u6848\u4e0d\u4f1a\u8fdd\u53cd\u4ed6\u4eec\u5728 \u7ec4\u7ec7\u3002\u8bbe\u8ba1\u89e3\u51b3\u65b9\u6848\uff0c\u4ee5\u5728\u6807\u51c6\u548c \u81ea\u5b9a\u4e49\u5bf9\u8c61\u3002\u6b64\u5916\uff0c\u8bf7\u786e\u4fdd\u60a8\u7684\u89e3\u51b3\u65b9\u6848\u80fd\u591f\u6b63\u5e38\u5904\u7406\u7528\u6237 \u8bbf\u95ee\u53d7\u5230\u9650\u5236\u3002\u5728\u67d0\u4e9b\u7528\u4f8b\u4e2d\uff0c\u7ed5\u8fc7 CRUD \u548c FLS \u662f\u53ef\u4ee5\u63a5\u53d7\u7684\uff0c\u4f8b\u5982\u5728\u4ee5\u4e0b\u60c5\u51b5\u4e0b\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u521b\u5efa\u4e0d\u76f4\u63a5\u516c\u5f00\u6570\u636e\u7684\u6c47\u603b\u6458\u8981\u6216\u805a\u5408\u3002<\/li>\n\n\n\n<li>\u4fee\u6539\u81ea\u5b9a\u4e49\u5bf9\u8c61\u6216\u5b57\u6bb5\uff0c\u4f8b\u5982\u65e5\u5fd7\u6216\u7cfb\u7edf\u5143\u6570\u636e\uff0c\u4ee5\u4fbf\u5b83\u4eec \u7528\u6237\u65e0\u6cd5\u901a\u8fc7 CRUD \u6216 FLS \u76f4\u63a5\u8bbf\u95ee\u3002<\/li>\n\n\n\n<li>\u4ece\u9ad8\u7279\u6743\u65b9\u6cd5\u8bbf\u95ee\u5bf9\u8c61\uff0c\u975e\u7ba1\u7406\u5458\u7528\u6237\u65e0\u6cd5\u8bbf\u95ee\u7684\u65b9\u6cd5 \u8bbf\u95ee\u3002<\/li>\n\n\n\n<li>\u5f53\u60a8\u7684\u89e3\u51b3\u65b9\u6848\u662f\u793e\u533a\u6216 \u7f51\u7ad9\u3002<\/li>\n\n\n\n<li>\u4f7f\u7528\u81ea\u5b9a\u4e49\u5b89\u5168\u7b56\u7565\u8bbf\u95ee\u5c5e\u4e8e\u547d\u540d\u7a7a\u95f4\u7684\u81ea\u5b9a\u4e49\u5bf9\u8c61\u3002 \u5728\u8fd9\u79cd\u60c5\u51b5\u4e0b\uff0c\u8bf7\u5c06\u7b56\u7565\u8bb0\u5f55\u4e3a AppExchange \u5b89\u5168\u5ba1\u67e5\u7684\u4e00\u90e8\u5206 \u63d0\u4ea4\u3002<\/li>\n<\/ul>\n\n\n\n<p>\u82e5\u8981\u4e86\u89e3\u6709\u5173 CRUD \u548c FLS \u5f3a\u5236\u6267\u884c\u7684\u8be6\u7ec6\u4fe1\u606f\uff0c\u8bf7\u67e5\u770b\u5b89\u5168\u670d\u52a1\u5668\u7aef\u5f00\u53d1 \u6a21\u5757\u3002\u82e5\u8981\u68c0\u6d4b\u4ee3\u7801\u4e2d\u7684 CRUD\/FLS \u51b2\u7a81\uff0c\u8bf7\u8003\u8651\u4f7f\u7528 \u4ee3\u7801\u626b\u63cf\u5668\uff0c\u5982 Salesforce Code Analyzer \u7684\u00a0Salesforce Graph Engine\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Apex \u793a\u4f8b<\/h2>\n\n\n\n<p>\u5728\u6b64 Apex \u4ee3\u7801\u4e2d\uff0c\u6570\u636e \u64cd\u4f5c\u8bed\u8a00 \uff08DML\uff09 \u8bed\u53e5\u5728\u4e0d\u68c0\u67e5\u7528\u6237\u662f\u5426\u5177\u6709\u521b\u5efa\u8bbf\u95ee\u6743\u9650\u7684\u60c5\u51b5\u4e0b\u8fd0\u884c Account \u5bf9\u8c61\u7684\u6743\u9650\u3002\u8be5\u4ee3\u7801\u4e0d\u4f1a\u5f3a\u5236\u6267\u884c\u7ec4\u7ec7\u7684\u8bbf\u95ee\u6743\u9650 \u8bbe\u7f6e\u3002<\/p>\n\n\n\n<p><samp>insert&nbsp;account<\/samp><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>public static Account createIndividualModalData(String name, String email, String mobile) {\n   RecordType recordType = &#91;Select Id from RecordType where DeveloperName = 'IndustriesIndividual' and SobjectType = Account'];\n   Account account = new Account();\n   account.Name = name;\n\n   if(recordType != null) account.RecordTypeId = recordType.id;\n   insert account;\n    ...\n}<\/code><\/pre>\n\n\n\n<p>\u6b64 Apex \u4ee3\u7801\u66f4\u5b89\u5168\uff0c\u56e0\u4e3a\u5b83\u5f3a\u5236\u6267\u884c\u7ec4\u7ec7\u7684\u8bbf\u95ee\u8bbe\u7f6e\u3002\u5b83\u5728\u6267\u884c DML \u8bed\u53e5\u4e4b\u524d\u8c03\u7528\u8be5\u65b9\u6cd5\u3002\u5982\u679c\u8fd4\u56de true\uff0c\u5219\u7528\u6237\u5177\u6709\u521b\u5efa\u8bbf\u95ee\u6743\u9650 Account \u5bf9\u8c61\u7684\u6743\u9650\uff0c\u5e76\u6267\u884c\u8bed\u53e5\u3002\u5426\u5219\uff0c\u8bbf\u95ee\u4e0d\u8db3\u9519\u8bef\u662f \u62a5\u9053\u3002<\/p>\n\n\n\n<p><samp>isCreatable()<\/samp><samp>insert&nbsp;account<\/samp><samp>isCreatable()<\/samp><samp>insert&nbsp;account<\/samp><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>public static Account createIndividualModalData(String name, String email, String mobile) {\n   RecordType recordType = &#91;Select Id from RecordType where DeveloperName = 'IndustriesIndividual' and SobjectType = 'Account'];\n   Account account = new Account();\n   account.Name = name;\n\n   if(recordType != null) account.RecordTypeId = recordType.id;\n\n   if (Schema.sObjectType.Account.isCreateable()) {\n      insert account;\n   } else {\n      ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR,'Error: Insufficient Access'));\n   }\n   ...\n}<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u7ed5\u8fc7 Apex \u4e2d\u7684\u5171\u4eab\u89c4\u5219<\/h2>\n\n\n\n<p>\u5c0a\u91cd\u57fa\u4e8e\u914d\u7f6e\u6587\u4ef6\u7684\u6743\u9650\u3001\u5b57\u6bb5\u7ea7\u5b89\u5168\u6027\u3001\u5171\u4eab\u89c4\u5219\u548c\u7ec4\u7ec7\u8303\u56f4 \u9ed8\u8ba4\u503c\u3002<\/p>\n\n\n\n<p>Salesforce Platform \u5e7f\u6cdb\u4f7f\u7528\u6570\u636e\u5171\u4eab\u89c4\u5219\u3002\u6bcf\u4e2a\u5bf9\u8c61\u53ef\u4ee5\u6709 \u6307\u793a\u54ea\u4e9b\u7528\u6237\u548c\u914d\u7f6e\u6587\u4ef6\u53ef\u4ee5\u8bfb\u53d6\u3001\u521b\u5efa\u3001\u7f16\u8f91\u548c\u5220\u9664\u7684\u552f\u4e00\u6743\u9650 \u8be5\u5bf9\u8c61\u7c7b\u578b\u7684\u8bb0\u5f55\u3002\u5f53\u60a8\u7684\u4ee3\u7801\u4f7f\u7528\u6807\u51c6 \u63a7\u5236\u5668\u3002<\/p>\n\n\n\n<p>\u4f46\u662f\uff0c\u81ea\u5b9a\u4e49 Apex \u7c7b\u6216 Visualforce \u9875\u9762\u672c\u8d28\u4e0a\u5e76\u4e0d\u9075\u5faa\u5185\u7f6e \u914d\u7f6e\u6587\u4ef6\u6743\u9650\u3001\u5b57\u6bb5\u7ea7\u5b89\u5168\u9650\u5236\u6216\u5171\u4eab\u89c4\u5219\u3002\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c\u4e00\u4e2a Apex \u7c7b\u53ef\u4ee5\u8bfb\u53d6\u548c\u66f4\u65b0\u7ec4\u7ec7\u5185\u7684\u6240\u6709\u6570\u636e\u3002<\/p>\n\n\n\n<p>\u5728 Apex \u4ee3\u7801\u4e2d\uff0c\u4e0d\u8981\u516c\u5f00\u5bf9\u7528\u6237\u9690\u85cf\u7684\u654f\u611f\u6570\u636e\u3002\u5c0a \u57fa\u4e8e\u914d\u7f6e\u6587\u4ef6\u7684\u6743\u9650\u3001\u5b57\u6bb5\u7ea7\u5b89\u5168\u6027\u3001\u5171\u4eab\u89c4\u5219\u548c\u7ec4\u7ec7\u8303\u56f4\u7684\u9ed8\u8ba4\u503c\u3002\u8bf7\u9075\u5faa\u4ee5\u4e0b\u4e00\u822c\u89c4\u5219\uff0c\u4ee5\u6b63\u786e\u5f3a\u5236\u6267\u884c\u5171\u4eab\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u5728\u6240\u6709\u5168\u5c40\u7c7b\u4e0a\u58f0\u660e\uff0c\u6216\u8005 \u5305\u542b\u65b9\u6cd5\u7684\u7c7b\u3002 \u4e0d\u8981\u7701\u7565\u5171\u4eab\u58f0\u660e\uff0c\u4e5f\u4e0d\u8981\u5728\u89e3\u51b3\u65b9\u6848\u7684\u8fd9\u4e9b\u5165\u53e3\u70b9\u4e0a\u4f7f\u7528\u3002<samp>with sharing<\/samp><samp>@NamespaceAccessible<\/samp><samp>without sharing<\/samp><\/li>\n\n\n\n<li>\u5bf9\u4e8e\u975e\u5168\u5c40\u6216\u6807\u8bb0\u7684\u63a7\u5236\u5668\u7c7b\uff0c\u8bf7\u5c06\u8be5\u7c7b\u58f0\u660e\u4e3a \u6216 \u3002\u4e0d\u8981\u7701\u7565\u5171\u4eab\u58f0\u660e\uff0c\u4e5f\u4e0d\u8981\u5728\u8fd9\u4e9b\u5165\u53e3\u70b9\u4e0a\u4f7f\u7528 \u6eb6\u6db2\u3002<samp>@NamespaceAccessible<\/samp><samp>with inherited sharing<\/samp><samp>with sharing<\/samp><samp>without sharing<\/samp><\/li>\n\n\n\n<li>\u5c06\u76f4\u63a5\u6267\u884c\u6570\u636e\u8bbf\u95ee\u64cd\u4f5c\u7684\u6240\u6709\u7c7b\u58f0\u660e\u4e3a \u3002\u5982\u679c\u89e3\u51b3\u65b9\u6848\u4e2d\u6ca1\u6709\u6807\u8bb0 \u7684\u7c7b\uff0c\u5219\u4e5f\u53ef\u4ee5\u4f7f\u7528\u3002<samp>with sharing<\/samp><samp>without sharing<\/samp><samp>with inherited sharing<\/samp><\/li>\n<\/ul>\n\n\n\n<p>\u4f46\u662f\uff0c\u4e5f\u6709\u4e00\u4e9b\u503c\u5f97\u6ce8\u610f\u7684\u4f8b\u5916\u3002\u5728\u4ee5\u4e0b\u60c5\u51b5\u4e0b\uff0c\u8bf7\u52ff\u9075\u5faa\u4e00\u822c\u89c4\u5219\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u4f60\u6b63\u5728\u6784\u5efa\u7f51\u7ad9\u6216\u793e\u533a\uff0c\u5e76\u5e0c\u671b\u62d2\u7edd\u6765\u5bbe\u7528\u6237\u8bbf\u95ee\u6570\u636e\u3002<\/li>\n\n\n\n<li>\u60a8\u6b63\u5728\u8bbf\u95ee\u5c5e\u4e8e\u60a8\u7684\u547d\u540d\u7a7a\u95f4\u7684\u81ea\u5b9a\u4e49\u5bf9\u8c61\uff0c\u5e76\u5177\u6709\u5b9a\u5236\u7684\u5b89\u5168\u6027 \u653f\u7b56\u3002\u5728\u8fd9\u79cd\u60c5\u51b5\u4e0b\uff0c\u8bf7\u5c06\u7b56\u7565\u8bb0\u5f55\u4e3a AppExchange \u5b89\u5168\u5ba1\u67e5\u7684\u4e00\u90e8\u5206 \u63d0\u4ea4\u6587\u4ef6\u3002\u6b64\u4f8b\u5916\u4e0d\u9002\u7528\u4e8e\u6807\u51c6\u5bf9\u8c61\u3002\u7ec4\u7ec7\u7ba1\u7406\u5458 \u72ec\u8d44\u62e5\u6709\u6807\u51c6\u5bf9\u8c61\u7684\u5b89\u5168\u7b56\u7565\u3002<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Apex \u793a\u4f8b<\/h2>\n\n\n\n<p>\u5728\u6b64 Apex \u4ee3\u7801\u4e2d\uff0c\u5173\u952e\u5b57\u4e0d\u662f \u6dfb\u52a0\u5230\u7c7b\u5934\u3002\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c\u5171\u4eab\u89c4\u5219\u4e0d\u662f \u6267\u884c\u3002<\/p>\n\n\n\n<p><samp>with sharing<\/samp><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>public class maincontroller {\n   @AuraEnabled public static String saveJobApplication(String vacId, String userId) {\n      ...\n   }\n}<\/code><\/pre>\n\n\n\n<p>\u5728\u6b64 Apex \u4ee3\u7801\u4e2d\uff0c\u5173\u952e\u5b57\u662f \u4f7f\u7528\u3002\u5f3a\u5236\u6267\u884c\u5171\u4eab\u89c4\u5219\u3002<samp>with sharing<\/samp><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>public with sharing class maincontroller {\n   @AuraEnabled public static String saveJobApplication(String vacId, String userId) {\n       ...\n   }\n}<\/code><\/pre>\n\n\n\n<p>\u82e5\u8981\u4e86\u89e3\u6709\u5173\u5171\u4eab\u89c4\u5219\u5b9e\u65bd\u7684\u8be6\u7ec6\u4fe1\u606f\uff0c\u8bf7\u67e5\u770b\u5b89\u5168\u670d\u52a1\u5668\u7aef\u5f00\u53d1 \u6a21\u5757\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u7531\u4e8e\u6570\u636e\u5e93\u67e5\u8be2\u6784\u9020\u4e0d\u5b89\u5168\u5bfc\u81f4\u7684 SOQL \u6ce8\u5165<\/h2>\n\n\n\n<p>\u8981\u9632\u6b62 Salesforce \u5bf9\u8c61\u67e5\u8be2\u8bed\u8a00 \uff08SOQL\uff09 \u6ce8\u5165\uff0c\u8bf7\u4f7f\u7528\u7ed1\u5b9a\u53d8\u91cf\u548c \u8f93\u5165\u536b\u751f\u3002<\/p>\n\n\n\n<p>SOQL \u6ce8\u5165\u662f\u4e00\u79cd\u6f0f\u6d1e\uff0c\u7528\u6237\u76f4\u63a5\u63a7\u5236 SOQL \u7684\u67d0\u4e9b\u90e8\u5206 \u6570\u636e\u5e93\u67e5\u8be2\u3002\u5728 Apex \u4e2d\u6267\u884c\u7684 SOQL \u67e5\u8be2\u4e0d\u5c0a\u91cd\u7528\u6237\u6743\u9650\u3002\u56e0\u6b64 SOQL \u6ce8\u5165\u53ef\u7528\u4e8e\u63d0\u5347\u7528\u6237\u7684\u6743\u9650\u5e76\u5141\u8bb8\u4ed6\u4eec\u8bbf\u95ee\u6570\u636e \u8d85\u51fa\u5176\u7528\u6237\u6743\u9650\u3002<\/p>\n\n\n\n<p>\u4e24\u79cd\u7c7b\u578b\u7684 SOQL \u6ce8\u5165\u6f0f\u6d1e\u9700\u8981\u4e0d\u540c\u7684\u4fdd\u62a4 \u65b9\u6cd5\u3002<\/p>\n\n\n\n<p>\u5728\u7b2c\u4e00\u79cd\u7c7b\u578b\u4e2d\uff0c\u7528\u6237\u63d0\u4f9b\u4e86\u4e0d\u6b63\u786e\u7684\u8868\u6216\u5b57\u6bb5\u540d\u79f0\u8fdb\u884c\u67e5\u8be2\u3002 \u5f53\u7528\u6237\u6570\u636e\u6807\u8bc6\u5b57\u6bb5\u6216\u8868\u540d\u79f0\u65f6\uff0c\u5fc5\u987b\u9a8c\u8bc1\u7528\u6237\u662f\u5426\u5177\u6709 \u8bbf\u95ee\u547d\u540d\u8868\u6216\u5b57\u6bb5\u7684\u6743\u9650\u3002\u8bf7\u8bb0\u4f4f\uff0c\u6b64\u7c7b\u578b\u4e0d\u662f\u5f15\u7528\u7684 \u4e0a\u4e0b\u6587\u3002<\/p>\n\n\n\n<p>\u5728\u7b2c\u4e8c\u79cd\u7c7b\u578b\u4e2d\uff0c\u7528\u6237\u63d0\u4f9b\u5e26\u5f15\u53f7\u7684 WHERE \u5b50\u53e5\u7684\u4e00\u90e8\u5206\u3002\u5f53\u7528\u6237\u6570\u636e \u63d2\u5165\u5230\u5e26\u5f15\u53f7\u7684\u5b57\u7b26\u4e32\u4e0a\u4e0b\u6587\u4e2d\u65f6\uff0c\u6570\u636e\u53ef\u4ee5\u8131\u79bb\u5e26\u5f15\u53f7\u7684\u4e0a\u4e0b\u6587\u3002\u8fd9 \u9996\u9009\u7684\u4fdd\u62a4\u65b9\u6cd5\u662f\u4f7f\u7528\u7ed1\u5b9a\u53d8\u91cf\u3002\u6216\u8005\uff0c\u60a8\u53ef\u4ee5\u4f7f\u7528 .\u8fd9\u4e24\u79cd\u65b9\u6cd5\u90fd\u4f1a\u963b\u6b62\u7528\u6237 \u4ece\u5f15\u7528\u7684\u4e0a\u4e0b\u6587\u4e2d\u7a81\u7834\u51fa\u6765\u7684\u6570\u636e\u3002<samp>EscapeSingleQuotes()<\/samp><\/p>\n\n\n\n<p>\u6c38\u8fdc\u4e0d\u8981\u5141\u8bb8\u7528\u6237\u63d0\u4f9b\u9664\u5b57\u6bb5\u540d\u79f0\u3001\u8868\u540d\u79f0\u3001 \u548c WHERE \u5b50\u53e5\u8f93\u5165\u3002<\/p>\n\n\n\n<p>\u907f\u514d\u5728 Apex \u4e2d\u6267\u884c\u7528\u6237\u751f\u6210\u7684\u67e5\u8be2\uff0c\u5728 Apex \u4e2d\uff0c\u8fd9\u4e9b\u67e5\u8be2\u5728\u7cfb\u7edf\u6a21\u5f0f\u4e0b\u8fd0\u884c\u3002\u5982\u679c\u5fc5\u987b \u751f\u6210\u66f4\u590d\u6742\u7684\u5ba2\u6237\u7aef SOQL\uff0c\u4f7f\u7528 REST \u6216 SOAP API\uff0c\u8fdb\u884c SOQL \u8c03\u7528 \u7262\u7262\u3002<\/p>\n\n\n\n<p>\u8981\u4e86\u89e3\u6709\u5173 SOQL \u6ce8\u5165\u4ee5\u53ca\u5982\u4f55\u5728\u4ee3\u7801\u4e2d\u9632\u6b62 SOQL \u6ce8\u5165\u7684\u66f4\u591a\u4fe1\u606f\uff0c\u8bf7\u67e5\u770b\u5b89\u5168\u670d\u52a1\u5668\u7aef\u5f00\u53d1 \u6a21\u5757\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">SOQL \u793a\u4f8b<\/h2>\n\n\n\n<p>\u6b64 SOQL \u8bed\u53e5\u662f\u4e0d\u5b89\u5168\u7684\uff0c\u56e0\u4e3a\u5b83\u662f\u901a\u8fc7\u5c06\u5b57\u7b26\u4e32\u4e0e\u5d4c\u5165\u5f0f\u8fde\u63a5\u8d77\u6765\u6784\u5efa\u7684 \u7528\u6237\u8f93\u5165\u3002\u8bed\u53e5\u4e4b\u524d\u4e0d\u8fdb\u884c\u8f93\u5165\u5ba1\u67e5 \u6267\u884c\u3002<\/p>\n\n\n\n<p><samp>database.query<\/samp><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>string objType = id.valueOf(deduped&#91;0].recordId).getSObjectType().getDescribe().getName();\nstring soql = 'select id, ' + string.join(fields, ', ') + ' from ' +    objType +' where id in: lrIDs';\nlist&lt;sobject&gt; records = database.query(soql);<\/code><\/pre>\n\n\n\n<p>\u5982\u679c\u5fc5\u987b\u4f7f\u7528\u52a8\u6001 SOQL\uff0c\u8bf7\u4f7f\u7528\u8be5\u65b9\u6cd5\u6e05\u7406\u7528\u6237\u63d0\u4f9b\u7684\u8f93\u5165\u3002\u6b64\u65b9\u6cd5\u6dfb\u52a0 \u7528\u6237\u63d0\u4f9b\u7684\u5b57\u7b26\u4e32\u4e2d\u6240\u6709\u5355\u5f15\u53f7\u7684\u8f6c\u4e49\u5b57\u7b26 \uff08\\\uff09\u3002\u6dfb\u52a0 \u8f6c\u4e49\u5b57\u7b26\u53ef\u786e\u4fdd\u5c06\u6240\u6709\u5355\u5f15\u53f7\u89c6\u4e3a\u5c01\u95ed\u5f0f \u5b57\u7b26\u4e32\u800c\u4e0d\u662f\u6570\u636e\u5e93 \u547d\u4ee4\u3002<\/p>\n\n\n\n<p><samp>EscapeSingleQuotes()<\/samp><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>string objType = escapeSingleQuotes(id.valueOf(deduped&#91;0].recordId).getSObjectType().getDescribe().getName());\nstring soql = 'select id, ' + string.join(fields, ', ') + ' from ' +    objType +' where id in: lrIDs';\nlist&lt;sobject&gt; records = database.query(soql);<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u8de8\u7ad9\u70b9\u8bf7\u6c42\u4f2a\u9020<\/h2>\n\n\n\n<p>\u8de8\u7ad9\u70b9\u8bf7\u6c42\u4f2a\u9020 \uff08CSRF\uff09 \u662f\u4e00\u79cd\u5f3a\u5236\u6700\u7ec8\u7528\u6237\u6267\u884c \u5728\u7ecf\u8fc7\u8eab\u4efd\u9a8c\u8bc1\u7684 Web \u5e94\u7528\u7a0b\u5e8f\u4f1a\u8bdd\u671f\u95f4\u6267\u884c\u4e0d\u9700\u8981\u7684\u64cd\u4f5c\u3002\u4e3a\u4e86\u9632\u6b62 CSRF\uff0c \u4f7f\u7528 \u6216\u89e6\u53d1\u72b6\u6001\u66f4\u6539 \u4e0e\u7528\u6237\u64cd\u4f5c\u3002<\/p>\n\n\n\n<p><samp>confirmationTokenRequired<\/samp><\/p>\n\n\n\n<p>\u5728 Salesforce Platform \u4e0a\u53d1\u51fa\u7684\u6240\u6709\u8868\u5355\u8bf7\u6c42\u90fd\u53d7\u5230\u4fdd\u62a4\u3002\u63d2\u5165\u3001\u5220\u9664\u3001\u66f4\u65b0\u3001 \u7531\u7528\u6237\u64cd\u4f5c\uff08\u5982\u6309\u94ae\u5355\u51fb\uff09\u89e6\u53d1\u7684\u66f4\u65b0\u63d2\u5165\u72b6\u6001\u66f4\u6539\u64cd\u4f5c\u662f \u4e5f\u53d7\u5230\u4fdd\u62a4\u3002\u4f46\u662f\uff0c\u9875\u9762\u4e0a\u89e6\u53d1\u7684\u72b6\u6001\u66f4\u6539\u6216\u6570\u636e\u64cd\u4f5c\u8bed\u8a00 \uff08DML\uff09 \u64cd\u4f5c \u5b9e\u4f8b\u5316\u5728\u9875\u9762\u7684\u5176\u4f59\u90e8\u5206\u52a0\u8f7d\u4e4b\u524d\u6267\u884c\uff0c\u5b83\u4eec\u7ed5\u8fc7\u5e73\u53f0\u7684 \u9ed8\u8ba4 CSRF \u4fdd\u62a4\u3002\u7c7b\u6784\u9020\u51fd\u6570\u4e2d\u7684\u72b6\u6001\u66f4\u6539\u548c DML \u64cd\u4f5c\u662f \u5982\u679c\u5b83\u4eec\u7531\u4ee5\u4e0b\u539f\u56e0\u89e6\u53d1\uff0c\u5219\u5bb9\u6613\u53d7\u5230\u653b\u51fb\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Visualforce \u9875\u9762<\/li>\n\n\n\n<li>Lightning Web \u7ec4\u4ef6 \uff08LWC\uff09<\/li>\n\n\n\n<li>\u5149\u73af<\/li>\n\n\n\n<li>\u4ece Visualforce \u9875\u9762\u7684 action \u53c2\u6570\u8c03\u7528\u7684\u4efb\u4f55\u65b9\u6cd5<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Apex \u793a\u4f8b<\/h2>\n\n\n\n<p>\u6b64 Visualforce \u9875\u9762\u5bb9\u6613\u53d7\u5230 CSRF \u7684\u653b\u51fb\uff0c\u56e0\u4e3a\u8be5\u64cd\u4f5c\u662f\u5728\u9875\u9762\u4e0a\u89e6\u53d1\u7684 \u521d\u59cb\u5316\u3002<\/p>\n\n\n\n<p><samp>!init<\/samp><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;apex:page controller=\"maincontroller\" action=\"{!init}\"&gt;\n\npublic pageReference init(){\n\n   UserSetting__c accountToUpdate;\n   pageReference p = page.mainview;\n   \/\/ Retrieve the password and redirect query string parameters from the current page URL\n   String password = ApexPages.currentPage().getParameters().get('password');\n   String redirect =   ApexPages.currentPage().getParameters().get('redirect');\n   if(string.isBlank(redirect)){\n       p.getParameters().put('redirect', '\/home\/home.jsp');\n       p.setRedirect(true);\n   } else {\n       p.getParameters().put('redirect', redirect);\n   }\n   if(string.isBlank(password)){\n       p.getParameters().put('password', 'blank');\n       p.setRedirect(true);\n   } else {\n       p.getParameters().put('password', password);\n       accountToUpdate = &#91;SELECT password__c FROM UserSetting__c LIMIT 1];\n       accountToUpdate.password__C = password;\n       update accountToUpdate;\n   }\n   if(p.getRedirect()== true){\n      return p; \n   }\n   else {\n       return null;\n   }\n}<\/code><\/pre>\n\n\n\n<p>\u9ed1\u5ba2\u53ef\u4ee5\u5236\u4f5c\u4e00\u4e2a\u5305\u542b\u66f4\u6539\u6570\u636e\u5e93\u8bed\u53e5\u7684\u53c2\u6570\u7684 URL\uff0c\u4ece\u800c\u5141\u8bb8 \u4ed6\u4eec\u6267\u884c\u4ed6\u4eec\u9009\u62e9\u7684\u6076\u610f\u64cd\u4f5c\u3002\u5f53\u7528\u6237\u6253\u5f00\u6b64\u7c7b URL \u65f6 \u767b\u5f55\u5230\u60a8\u7684\u5e94\u7528\u7a0b\u5e8f\uff0c\u4ee3\u7801\u5c06\u4f7f\u7528\u9ed1\u5ba2\u9009\u62e9\u7684 URL \u53c2\u6570\u6267\u884c\u3002\u8fd9 \u610f\u5916\u7684\u6570\u636e\u5e93\u64cd\u4f5c\u4ece\u53d7\u5bb3\u8005\u6d4f\u89c8\u5668\u7684\u4e0a\u4e0b\u6587\u4e2d\u6267\u884c\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Visualforce \u9875\u9762\u4fdd\u62a4<\/h2>\n\n\n\n<p>\u9632\u6b62\u72b6\u6001\u66f4\u6539\u6216 DML \u65f6 Visualforce \u9875\u9762\u4e2d\u7684 CSRF \u6f0f\u6d1e \u64cd\u4f5c\u5728\u9875\u9762\u521d\u59cb\u5316\u65f6\u6267\u884c\uff0c\u5728 Visualforce \u9875\u9762\u4e2d\u542f\u7528\u5e03\u5c14\u5143\u6570\u636e\u5b57\u6bb5\u3002<samp>confirmationTokenRequired<\/samp><\/p>\n\n\n\n<p>\u5982\u679c\u8bbe\u7f6e\u4e3a true\uff0c\u5219 GET \u5bf9\u9875\u9762\u7684\u8bf7\u6c42\u8981\u6c42\u5728 URL \u4e2d\u4f7f\u7528 CSRF \u4ee4\u724c\u3002\u5982\u679c\u7701\u7565\u4ee4\u724c\uff0c\u5219\u9875\u9762\u4e3a \u65e0\u6cd5\u3002<samp>confirmationTokenRequired<\/samp><\/p>\n\n\n\n<p>\u9ed8\u8ba4\u8bbe\u7f6e\u4e3a false\uff0c\u8fd9\u5c06\u5220\u9664 Apex \u7684\u5185\u7f6e CSRF \u4ee4\u724c\u4fdd\u62a4\u3002\u60a8\u53ef\u4ee5 \u901a\u8fc7\u8f6c\u5230\u7ec4\u7ec7\u8bbe\u7f6e\u4e2d\u7684\u76f8\u5173 Visualforce \u9875\u9762\u8bbe\u7f6e\u6765\u914d\u7f6e\u6b64\u5b57\u6bb5\u3002<\/p>\n\n\n\n<p>\u6709\u5173 \uff0c \u8bf7\u53c2\u9605\u5143\u6570\u636e API \u4e2d\u7684\u00a0ApexPage\u00a0\u5f00\u53d1\u4eba\u5458\u6307\u5357\u3002<samp>confirmationTokenRequired<\/samp><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u96f7\u7535\u548c LWC CSRF \u4fdd\u62a4<\/h2>\n\n\n\n<p>\u5728\u5b9e\u4f8b\u5316\u671f\u95f4\uff0c\u8bf7\u52ff\u5728 Apex \u63a7\u5236\u5668\u4e2d\u6267\u884c\u4efb\u4f55\u72b6\u6001\u66f4\u6539\u6216 DML \u64cd\u4f5c \u95ea\u7535\u6216LWC\u3002\u76f8\u53cd\uff0c\u4f7f\u7528\u7528\u6237\u64cd\u4f5c\uff08\u5982\u6309\u94ae\uff09\u89e6\u53d1\u72b6\u6001\u66f4\u6539 \u70b9\u51fb\u3002\u8981\u4e86\u89e3\u6709\u5173 CSRF \u4ee5\u53ca\u5982\u4f55\u5728\u4ee3\u7801\u4e2d\u9632\u6b62\u5b83\u7684\u66f4\u591a\u4fe1\u606f\uff0c\u8bf7\u67e5\u770b\u5b89\u5168\u670d\u52a1\u5668\u7aef\u5f00\u53d1 \u6a21\u5757\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u6253\u5f00\u91cd\u5b9a\u5411<\/h2>\n\n\n\n<p>\u5f53\u5e94\u7528\u7a0b\u5e8f\u52a8\u6001\u91cd\u5b9a\u5411\u5230\u7528\u6237\u63a7\u5236\u7684 \u53c2\u6570\u503c\uff0c\u65e0\u9700\u4efb\u4f55\u9a8c\u8bc1\u3002\u4f7f\u7528\u786c\u7f16\u7801\u9632\u6b62\u6253\u5f00\u91cd\u5b9a\u5411 \u91cd \u5b9a\u5411\u3002<\/p>\n\n\n\n<p>\u5f00\u653e\u91cd\u5b9a\u5411\u4e5f\u79f0\u4e3a\u4efb\u610f\u91cd\u5b9a\u5411\u6216\u672a\u7ecf\u9a8c\u8bc1\u7684\u91cd\u5b9a\u5411\u3002\u6b64\u6f0f\u6d1e\u662f \u7528\u4e8e\u7f51\u7edc\u9493\u9c7c\u653b\u51fb\uff0c\u5c06\u7528\u6237\u91cd\u5b9a\u5411\u5230\u4efb\u4f55 URL\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Apex \u793a\u4f8b<\/h2>\n\n\n\n<p>\u5728\u6b64\u51fd\u6570\u5b9a\u4e49\u4e2d\uff0c\u8be5\u8bed\u53e5\u68c0\u7d22 URL \u53c2\u6570\u3002\u8be5\u53c2\u6570\u7528\u4e8e\u521b\u5efa\u91cd\u5b9a\u5411 URL\uff0c\u7136\u540e \u6267\u884c\u5ba2\u6237\u7aef\u91cd\u5b9a\u5411\u5230\u6784\u5efa\u7684 \u7f51\u5740\u3002<\/p>\n\n\n\n<p><samp>String.redirect&nbsp;<\/samp><samp>redirect<\/samp><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>public PageReference changepassword(){\n   PageReference savePage;\n   String redirect = ApexPages.currentPage().getParameters().get('redirect');\n   redirect = (redirect == NULL) ? '\/home\/home.jsp' : redirect;\n   savePage = new PageReference(redirect);\n   savePage.setRedirect(true);\n   return savePage;\n}<\/code><\/pre>\n\n\n\n<p>Visualforce \u6807\u8bb0\u89c6\u56fe\u89e6\u53d1\u5668 \u8be5\u64cd\u4f5c\uff0c\u5bfc\u81f4\u6253\u5f00 \u91cd\u5b9a\u5411\u5305\u4e2d\u7684\u6f0f\u6d1e\u3002<samp>&lt;apex:form&gt;<\/samp><samp>changepassword<\/samp><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;apex:form&gt;\n   Redirection action: &lt;apex:inputText value=\"{!userInput}\" \/&gt;\n   &lt;br\/&gt;&lt;apex:commandButton value=\"Submit\" action=\"{!changepassword}\" \/&gt;\n&lt;\/apex:form&gt;<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u7ecf\u4fee\u8ba2\u7684\u5b88\u5219<\/h2>\n\n\n\n<p>\u5f00\u653e\u91cd\u5b9a\u5411\u5c06\u60a8\u7684\u91cd\u5b9a\u5411\u53c2\u6570\u66b4\u9732\u7ed9\u6f5c\u5728\u7684\u653b\u51fb\u8005\u3002\u60a8\u53ef\u4ee5\u9632\u6b62 \u4f7f\u7528\u591a\u79cd\u7b56\u7565\u6253\u5f00\u91cd\u5b9a\u5411\u3002\u4e00\u79cd\u7b56\u7565\u662f\u4f7f\u7528\u786c\u7f16\u7801\u91cd\u5b9a\u5411\u3002\u5728\u4e00\u4e2a \u786c\u7f16\u7801\u91cd\u5b9a\u5411\u65f6\uff0c\u60a8\u53ef\u4ee5\u663e\u5f0f\u8bbe\u7f6e\u503c\uff0c\u5982\u4e0b\u6240\u793a \u4f8b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>public PageReference changepassword(){\n   PageReference savePage;\n   savePage = new PageReference('\/home\/home.jsp');\n   savePage.setRedirect(true);\n   return savePage;\n}<\/code><\/pre>\n\n\n\n<p>\u8981\u4e86\u89e3\u6709\u5173\u5f00\u653e\u91cd\u5b9a\u5411\u4ee5\u53ca\u5982\u4f55\u5728\u4ee3\u7801\u4e2d\u9632\u6b62\u5b83\u4eec\u7684\u66f4\u591a\u4fe1\u606f\uff0c\u8bf7\u67e5\u770b\u767b\u5c71\u53e3\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Lightning LockerService \u5df2\u7981\u7528<\/h2>\n\n\n\n<p>Lightning LockerService \u662f Lightning \u4ee3\u7801\u7684\u4e00\u9879\u5173\u952e\u5b89\u5168\u529f\u80fd\u3002\u5b83\u63d0\u4f9b \u7ec4\u4ef6\u9694\u79bb\uff0c\u5141\u8bb8\u6765\u81ea\u591a\u4e2a\u6765\u6e90\u7684\u4ee3\u7801\u4f7f\u7528 safe\u3001 \u6807\u51c6 API \u548c\u4e8b\u4ef6\u673a\u5236\u3002\u4e3a AppExchange \u8f6f\u4ef6\u5305\u542f\u7528 Lightning Locker \u5305\u542b Lightning \u7ec4\u4ef6\u6216\u5e94\u7528\u7a0b\u5e8f\u3002<\/p>\n\n\n\n<p>\u4e3a\u6240\u6709\u81ea\u5b9a\u4e49 Lightning Web \u7ec4\u4ef6\u542f\u7528\u4e86 Lightning LockerService\u3002\u670d\u52a1\u662f \u5728 17 \u5e74\u590f\u5b63\u7248\u672c\u4e2d\u4e3a\u5ba2\u6237\u6fc0\u6d3b\u3002Lightning LockerService \u672a\u5f3a\u5236\u6267\u884c \u9002\u7528\u4e8e\u4f7f\u7528 API \u7248\u672c 39.0 \u53ca\u66f4\u4f4e\u7248\u672c\u7684\u7ec4\u4ef6\uff0c\u8be5\u7248\u672c\u6db5\u76d6\u521b\u5efa\u7684\u4efb\u4f55\u7ec4\u4ef6 \u5728 17 \u5e74\u590f\u5b63\u4e4b\u524d\u3002\u5f53\u7ec4\u4ef6\u81f3\u5c11\u8bbe\u7f6e\u4e3a API \u7248\u672c 40.0 \u65f6\uff0c\u5c06\u542f\u7528\u8be5\u7ec4\u4ef6\u3002\u65b0\u589e\u529f\u80fd AppExchange \u5b89\u5168\u5ba1\u67e5\u548c\u5b9a\u671f\u91cd\u65b0\u5ba1\u67e5\u8981\u6c42\u7ec4\u4ef6\u7684\u7248\u672c\u4e3a 40.0 \u6216\u66f4\u9ad8\u7248\u672c\uff0c\u4ee5\u4fbf\u542f\u7528 Locker\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u5143\u6570\u636e\u793a\u4f8b<\/h2>\n\n\n\n<p>\u5728\u6b64\u7ec4\u4ef6\u7684\u5143\u6570\u636e\u4e2d\uff0c \u8be5\u5b57\u6bb5\u5c06 API \u7248\u672c\u8bbe\u7f6e\u4e3a 39.0\u3002 \u5bf9\u4e8e\u4f7f\u7528 API \u7248\u672c 39.0 \u548c \u964d\u4f4e\u3002<\/p>\n\n\n\n<p><samp>&lt;AuraDefinitionBundle&gt;<\/samp><samp>&lt;apiVersion&gt;<\/samp><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n&lt;AuraDefinitionBundle xmlns=\"http:\/\/soap.sforce.com\/2006\/04\/metadata\"&gt;\n     &lt;apiVersion&gt;39.0&lt;\/apiVersion&gt;\n     &lt;description&gt;My Component&lt;\/description&gt;\n&lt;\/AuraDefinitionBundle&gt;<\/code><\/pre>\n\n\n\n<p>\u5728\u6b64\u7ec4\u4ef6\u7684\u4fee\u8ba2\u5143\u6570\u636e\u4e2d\uff0c\u8be5\u5b57\u6bb5\u8bbe\u7f6e API \u7248\u672c \u81f3 40.0\u3002LockerService \u5bf9\u4f7f\u7528 API \u7248\u672c 40.0 \u548c \u9ad8\u7b49\u3002<\/p>\n\n\n\n<p><samp>&lt;AuraDefinitionBundle&gt;<\/samp><samp>&lt;apiVersion&gt;<\/samp><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n&lt;AuraDefinitionBundle xmlns=\"http:\/\/soap.sforce.com\/2006\/04\/metadata\"&gt;\n     &lt;apiVersion&gt;40.0&lt;\/apiVersion&gt;\n     &lt;description&gt;My Component&lt;\/description&gt;\n&lt;\/AuraDefinitionBundle&gt;<\/code><\/pre>\n\n\n\n<p>\u6709\u5173\u66f4\u591a\u4fe1\u606f\uff0c\u8bf7\u9605\u8bfb\u00a02017 \u5e74\u590f\u5b63\u53d1\u884c\u8bf4\u660e\u548c\u00a0Lightning \u5b89\u5168\u6027\u00a0Lightning Web \u7ec4\u4ef6\u5f00\u53d1\u4eba\u5458\u6307\u5357\u4e2d\u7684\u50a8\u7269\u67dc\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u95ea\u7535\u7ec4\u4ef6\u4e2d\u7684\u8f6c\u4e49\u4e0d\u8db3<\/h2>\n\n\n\n<p>\u6346\u7ed1\u5305\u4e2d\u7684\u6bcf\u4e2a\u7ec4\u4ef6\u90fd\u8d1f\u8d23\u6e05\u7406\u63d0\u4f9b\u7ed9\u5b83\u7684\u8f93\u5165 \u7236\u7ec4\u4ef6\u3001\u5e94\u7528\u6216 URL \u53c2\u6570\u3002<\/p>\n\n\n\n<p>\u5355\u4e2a\u7ec4\u4ef6\u7684\u5b89\u5168\u8fb9\u754c\u662f\u7ec4\u4ef6\u6346\u7ed1\u5305\u3002\u4e2d\u7684\u6bcf\u4e2a\u7ec4\u4ef6 \u6346\u7ed1\u5305\u8d1f\u8d23\u6e05\u7406\u7236\u7ec4\u4ef6\u3001\u5e94\u7528\u7a0b\u5e8f\u3001 \u6216\u5728 URL \u53c2\u6570\u4e2d\u3002\u5047\u5b9a\u516c\u5171\u6216\u5168\u5c40\u7ec4\u4ef6\u5c5e\u6027\u5305\u542b \u653b\u51fb\u8005\u63a7\u5236\u7684\u8f93\u5165\uff0c\u9664\u975e\u88ab\u5904\u7406\u7a0b\u5e8f\u4e2d\u7684\u7ec4\u4ef6\u6e05\u7406\u3002<samp>onInit<\/samp><\/p>\n\n\n\n<p>\u672a\u80fd\u6e05\u7406\u8f93\u5165\u53ef\u80fd\u4f1a\u5bfc\u81f4\u8de8\u7ad9\u70b9\u811a\u672c \uff08XSS\uff09 \u6216 URL \u91cd\u5b9a\u5411 \u653b\u51fb\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u5149\u73af\u793a\u4f8b<\/h2>\n\n\n\n<p>\u5728\u6b64 Aura \u4ee3\u7801\u4e2d\uff0c\u7ec4\u4ef6\u4ece\u5168\u5c40\u5c5e\u6027\u4e2d\u8bfb\u53d6\u6570\u636e\uff0c\u7136\u540e\u5c06\u5176\u5448\u73b0\u7ed9 \u6587\u6863\u5bf9\u8c61\u6a21\u578b \uff08DOM\uff09 \u6ca1\u6709\u5145\u5206\u8f6c\u4e49\u3002\u4e00\u4e2a\u53c2\u6570\u5177\u6709\u6807\u7b7e\uff0c\u8be5\u6807\u7b7e\u53ef\u88ab\u5229\u7528\u3002\u9ed1\u5ba2 \u6216\u8005\u6076\u610f\u8f6f\u4ef6\u53ef\u4ee5\u5c06 HTML \u6216 JavaScript \u6ce8\u5165\u89c6\u56fe\u5e76\u89e6\u53d1\u8de8\u7ad9\u70b9\u811a\u672c \uff08XSS\uff09 \u653b\u51fb\u3002<\/p>\n\n\n\n<p><samp>unescapedHTML<\/samp><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;aura:component controller=\"name_NewsController\" access=\"global\" extends=\"c:name_Name\" implements=\"force:appHostable,flexipage:availableForAllPageTypes,forceCommunity:availableForAllPageTypes\"&gt;\n   &lt;aura:handler name=\"baseReady\" event=\"c:name_Name\" action=\"{!c.doInit}\"\/&gt;\n   ...\n   &lt;aura:attribute name=\"newsDetails\" type=\"String\" default=\"\" access=\"global\"\/&gt;\n   ...\n   &lt;div class=\"slds-col_padded slds-size_1-of-1 textDetail\"&gt;\n      &lt;div class=\"slds-text-longform\"&gt;\n         &lt;aura:unescapedHtml aura:Id=\"newsDetail\" value=\"{!v.newsDetails}\"\/&gt;\n       &lt;\/div&gt;\n   &lt;\/div&gt;\n   ...\n&lt;\/aura:component&gt;<\/code><\/pre>\n\n\n\n<p>\u6b64 Aura \u7ec4\u4ef6\u4ee3\u7801\u662f\u5b89\u5168\u7684\uff0c\u56e0\u4e3a\u5b83\u4e0d\u4f7f\u7528 .<\/p>\n\n\n\n<p><samp>unescapedHTML<\/samp><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;aura:component controller=\"name_NewsController\" access=\"global\" extends=\"c:name_Name\" implements=\"force:appHostable,flexipage:availableForAllPageTypes,forceCommunity:availableForAllPageTypes\"&gt;\n   &lt;aura:handler name=\"baseReady\" event=\"c:name_Name\" action=\"{!c.doInit}\"\/&gt;\n   ...\n   &lt;aura:attribute name=\"newsDetails\" type=\"String\" default=\"\" access=\"global\"\/&gt;\n   ...\n   &lt;div class=\"slds-col_padded slds-size_1-of-1 textDetail\"&gt;\n      &lt;div class=\"slds-text-longform\"&gt;\n         &lt;aura:Id=\"newsDetail\" value=\"{!v.newsDetails}\"\/&gt;\n       &lt;\/div&gt;\n   &lt;\/div&gt;\n   ...\n&lt;\/aura:component&gt;<\/code><\/pre>\n\n\n\n<p>\u6709\u5173\u8be6\u7ec6\u4fe1\u606f\uff0c\u8bf7\u53c2\u9605\u201c\u5b89\u5168\u7f16\u7801\u201d\u4e2d\u7684\u201c\u95ea\u7535\u5b89\u5168\u201d \u6307\u5bfc\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u7ec4\u4ef6\u4e2d\u7684\u5f02\u6b65\u4ee3\u7801<\/h2>\n\n\n\n<p>\u9ed1\u5ba2\u53ef\u4ee5\u64cd\u7eb5\u5f02\u6b65\u4ee3\u7801\u7684\u65f6\u5e8f\u6765\u4ea7\u751f\u6076\u610f\u7ed3\u679c\u3002\u81ea \u4fdd\u7559\u5f53\u524d\u6267\u884c\u4e0a\u4e0b\u6587\uff0c\u5c06\u5f02\u6b65\u51fd\u6570\u8c03\u7528\u6216\u6279\u5904\u7406\u64cd\u4f5c\u5305\u88c5\u5230 \u5355\u4e2a\u8bf7\u6c42\u3002<\/p>\n\n\n\n<p>\u5f53\u60a8\u4f7f\u7528\u5f02\u6b65\u51fd\u6570\uff08\u5982 \u548c\uff09\u5f15\u7528 \u7ec4\u4ef6\uff0c\u5219\u9000\u51fa\u6846\u67b6\u7684\u751f\u547d\u5468\u671f\u3002\u5982\u679c\u5728\u7528\u6237\u4e2d\u7684\u5176\u4ed6\u4f4d\u7f6e\u5bfc\u822a \u63a5\u53e3 \u5728\u6267\u884c\u5f02\u6b65\u4ee3\u7801\u65f6\uff0c\u6846\u67b6\u4f1a\u53d6\u6d88\u6e32\u67d3\u5e76\u9500\u6bc1 \u53d1\u51fa\u5f02\u6b65\u8bf7\u6c42\u7684\u7ec4\u4ef6\u3002\u60a8\u4ecd\u7136\u53ef\u4ee5\u5bf9\u6b64\u8fdb\u884c\u5f15\u7528 \u7ec4\u4ef6\uff0c\u4f46\u5b83\u4e0d\u518d\u6709\u6548\u3002\u9ed1\u5ba2\u4ee5\u6709\u5bb3\u7684\u65b9\u5f0f\u5229\u7528\u6b64\u6f0f\u6d1e\uff0c\u7528\u4e8e \u4f8b\u5982\uff0c\u4f7f\u5e94\u7528\u5d29\u6e83\u3002<samp>setTimeout()<\/samp><samp>setInterval()<\/samp><\/p>\n\n\n\n<p>\u82e5\u8981\u5b89\u5168\u5730\u91cd\u65b0\u8fdb\u5165\u6846\u67b6\uff0c\u8bf7\u5c06\u4ee3\u7801\u5305\u88c5\u5728\u51fd\u6570\u4e2d\u3002\u7136\u540e\uff0c\u4e3a\u4e86\u786e\u4fdd\u7ec4\u4ef6\u4ecd\u7136\u6709\u6548\uff0c \u5728\u6267\u884c\u4e4b\u524d\u4f7f\u7528\u51fd\u6570 \u56de\u8c03\u4e2d\u7684\u4efb\u4f55\u5185\u5bb9\u3002\u6216\u8005\uff0c\u4f7f\u7528 \u5c06\u591a\u4e2a\u64cd\u4f5c\u6279\u5904\u7406\u5230\u4e00\u4e2a\u8bf7\u6c42\u4e2d\u3002<samp>$A.getCallback()<\/samp><samp>component.isValid()<\/samp><samp>enqueueAction()<\/samp><\/p>\n\n\n\n<p>\u6ce8\u610f<\/p>\n\n\n\n<p>\u6b64\u6f0f\u6d1e\u4e0d\u9002\u7528\u4e8e\u9488\u5bf9 Summer &#8217;17 \u7248\u672c\u521b\u5efa\u7684\u7ec4\u4ef6 \uff08API v40.0\uff09 \u6216\u66f4\u9ad8\u7248\u672c\u3002<\/p>\n\n\n\n<p>\u8fd9\u4e9b\u793a\u4f8b\u63cf\u8ff0\u4e86\u5b89\u5168\u8fdd\u89c4\u4ee5\u53ca\u5982\u4f55\u89e3\u51b3\u5b83\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u5149\u73af\u793a\u4f8b<\/h2>\n\n\n\n<p>\u8be5\u51fd\u6570\u4f7f\u60a8\u53ef\u4ee5\u8bbf\u95ee \u6587\u6863\u5bf9\u8c61\u6a21\u578b \uff08DOM\uff09\u3002\u4f46\u662f\uff0c\u8bbf\u95ee DOM \u662f\u5728 Lightning \u6846\u67b6\u4e4b\u5916\u7684\u4e0a\u4e0b\u6587\u4e2d\u53d1\u751f\u7684\u3002\u6709 \u65e0\u6cd5\u4fdd\u8bc1\u7236\u7ec4\u4ef6\u7684\u72b6\u6001 &#8211; \u8be5\u51fd\u6570\u53ef\u80fd\u6ca1\u6709 \u7236\u7ec4\u4ef6\u3002\u5982\u679c\u72b6\u6001\u53d1\u751f\u66f4\u6539\uff0c\u56de\u8c03\u51fd\u6570\u53ef\u4ee5\u5bf9\u5176\u6570\u636e\u6267\u884c\u64cd\u4f5c \u4e0d\u62e5\u6709\uff0c\u6216\u8005\u5b83\u53ef\u4ee5\u7b49\u5f85\u4ece\u672a\u663e\u793a\u7684\u6570\u636e\u3002\u5728\u8fd9\u4e9b\u60c5\u51b5\u4e0b\uff0c\u5e94\u7528\u4f1a\u5f15\u53d1 \u4e00\u6761\u9519\u8bef\u6d88\u606f\uff0c\u8be5\u6d88\u606f\u5c06\u505c\u6b62\u6574\u4e2a Salesforce \u9875\u9762\uff0c\u5e76\u4e14\u7ec4\u4ef6\u505c\u6b62\u54cd\u5e94\u3002<\/p>\n\n\n\n<p><samp>setInterval()<\/samp><samp>setInterval()<\/samp><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>vars.Timer = setInterval(function(){ helper.action(component); },1);<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u4f7f\u7528 getCallback\uff08\uff09 \u793a\u4f8b\u4fee\u6539\u7684\u4ee3\u7801<\/h2>\n\n\n\n<p>\u82e5\u8981\u5b89\u5168\u5730\u91cd\u65b0\u8fdb\u5165\u6846\u67b6\uff0c\u8bf7\u5c06\u4ee3\u7801\u5305\u88c5\u5728\u51fd\u6570\u4e2d\u3002\u7136\u540e\uff0c\u4e3a\u4e86\u786e\u4fdd\u7ec4\u4ef6\u4ecd\u7136\u6709\u6548\uff0c \u5728\u6267\u884c\u4e4b\u524d\u4f7f\u7528\u51fd\u6570 \u56de\u8c03\u4e2d\u7684\u4efb\u4f55\u5185\u5bb9\u3002<samp>$A.getCallback()<\/samp><samp>component.isValid()<\/samp><\/p>\n\n\n\n<p>\u7528\u4e8e\u5305\u88c5\u8bbf\u95ee \u6b63\u5e38\u91cd\u65b0\u6e32\u67d3\u751f\u547d\u5468\u671f\u4e4b\u5916\u7684\u7ec4\u4ef6\uff0c\u4f8b\u5982\u5728 OR \u8c03\u7528\u4e2d\u3002 \u4fdd\u7559\u5f53\u524d\u6267\u884c\u4e0a\u4e0b\u6587\uff0c\u5e76\u6388\u4e88\u5bf9 \u5f02\u6b65\u4ee3\u7801\u3002\u5426\u5219\uff0c\u6846\u67b6\u5c06\u5931\u53bb\u4e0a\u4e0b\u6587\uff0c\u53ea\u5141\u8bb8\u8bbf\u95ee\u5168\u5c40 \u8d44\u6e90\u3002<samp>$A.getCallback()<\/samp><samp>setTimeout()<\/samp><samp>setInterval()<\/samp><samp>$A.getCallback()<\/samp><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>window.setTimeout(\n   $A.getCallback(function() {\n      if(cmp.isValid()){ \n         cmp.set(\"v.visible\", true); \n      }\n   }), 5000\n);<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\u4f7f\u7528 enqueueAction\uff08\uff09 \u793a\u4f8b\u4fee\u6539\u540e\u7684\u4ee3\u7801<\/h2>\n\n\n\n<p>\u6216\u8005\uff0c\u4f7f\u7528 \uff0c\u8fd9\u4f1a\u6dfb\u52a0 \u670d\u52a1\u5668\u7aef\u63a7\u5236\u5668\u64cd\u4f5c\u6dfb\u52a0\u5230\u8981\u6267\u884c\u7684\u64cd\u4f5c\u961f\u5217\u4e2d\u3002\u800c\u4e0d\u662f\u53d1\u9001 \u5bf9\u4e8e\u6bcf\u4e2a\u5355\u72ec\u7684\u64cd\u4f5c\uff0c\u6846\u67b6\u5206\u522b\u8bf7\u6c42\u5904\u7406\u4e8b\u4ef6\u94fe\u548c \u5c06\u961f\u5217\u4e2d\u7684\u64cd\u4f5c\u6279\u5904\u7406\u4e3a\u4e00\u4e2a\u8bf7\u6c42\u3002\u8fd9\u4e9b\u64cd\u4f5c\u662f\u5f02\u6b65\u7684\uff0c\u5e76\u4e14\u5177\u6709 \u56de\u8c03\u3002<samp>enqueueAction()<\/samp><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>var action = component.get(\u201cc.usually_a_server_side_controller\u201d);\naction.setCallback(this, function()(response) {...});\n$A.enqueueAction(action2);<\/code><\/pre>\n\n\n\n<p>\u8981\u4e86\u89e3\u66f4\u591a\u4fe1\u606f\uff0c\u8bf7\u67e5\u770b\u6211\u4eec\u7684\u5b89\u5168\u5ba2\u6237\u7aef\u5f00\u53d1 \u6a21\u5757\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u5b89\u5168\u901a\u4fe1<\/h2>\n\n\n\n<p>\u786e\u4fdd\u89e3\u51b3\u65b9\u6848\u53ea\u80fd\u901a\u8fc7\u5b89\u5168\u8fde\u63a5\uff08\u5982 SFTP\uff09\u8bbf\u95ee \u548c HTTPS\u3002\u907f\u514d\u4f7f\u7528 HTTP \u548c FTP\uff0c\u56e0\u4e3a\u8fd9\u4e9b\u534f\u8bae\u4e0d\u4f1a\u5bf9 \u901a\u8fc7 Internet \u6d41\u52a8\u3002<\/p>\n\n\n\n<p>\u53d1\u9001\u548c\u63a5\u6536\u6587\u4ef6\u4f20\u8f93\u65f6\u4f7f\u7528 SSH \u6587\u4ef6\u4f20\u8f93\u534f\u8bae \uff08SFTP\uff09\u3002SFTP \u4f7f\u7528 \u52a0\u5bc6\u7b97\u6cd5\u53ef\u5b89\u5168\u79fb\u52a8\u6587\u4ef6\u5e76\u63d0\u4f9b\u6bd4 FTP\u7684\u3002<\/p>\n\n\n\n<p>\u4f7f\u7528\u5b89\u5168\u8d85\u6587\u672c\u4f20\u8f93\u534f\u8bae \uff08HTTPS\uff09 \u5728 Web \u6d4f\u89c8\u5668\u548c \u7f51\u7ad9\u3002\u5728 HTTPS \u4e2d\uff0c\u901a\u4fe1\u4f7f\u7528\u4f20\u8f93\u5c42\u5b89\u5168\u6027 \uff08TLS\uff09 \u8fdb\u884c\u52a0\u5bc6\uff0c\u8be5 \u4fdd\u62a4\u4f20\u8f93\u4e2d\u7684\u6570\u636e\u3002\u4f7f\u7528\u5b89\u5168\u7248\u672c\u7684 TLS\uff0c\u7981\u7528\u5f31\u5bc6\u7801\uff0c\u751f\u6210 \u957f\u952e\uff0c\u5e76\u5c06\u4f7f\u7528 HTTP \u7684\u4f20\u5165\u8bf7\u6c42\u91cd\u5b9a\u5411\u5230 HTTPS\u3002<\/p>\n\n\n\n<p>\u8981\u9632\u6b62\u4e2d\u95f4\u4eba\u964d\u7ea7\u653b\u51fb\uff0c\u8bf7\u4f7f\u7528 HTTP \u4e25\u683c\u4f20\u8f93\u5b89\u5168 \uff08HSTS\uff09\u3002 \u5728\u8fd9\u4e9b\u653b\u51fb\u4e2d\uff0c\u9ed1\u5ba2\u62e6\u622a\u901a\u4fe1\u5e76\u4ece HTTPS \u91cd\u5b9a\u5411\u8bbf\u95ee\u8005 \u5c06\u8d44\u6e90\u7684\u7248\u672c\u590d\u5236\u5230 HTTP \u526f\u672c\u3002<\/p>\n\n\n\n<p>\u82e5\u8981\u4e86\u89e3\u8be6\u7ec6\u4fe1\u606f\uff0c\u8bf7\u53c2\u9605\u5b89\u5168\u7f16\u7801 \u5b89\u5168 \u901a\u4fe1\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u4fdd\u62a4\u60a8\u7684 B2C \u5546\u52a1\u89e3\u51b3\u65b9\u6848<\/h2>\n\n\n\n<p>AppExchange \u4e0a\u5217\u51fa\u7684\u6240\u6709 B2C Commerce Cartridge \u548c Headless \u96c6\u6210\u90fd\u5fc5\u987b\u9075\u5b88 \u6ee1\u8db3\u8fd9\u4e9b\u8981\u6c42\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u52a0\u5bc6\u3001\u52a0\u5bc6\u548c\u79d8\u5bc6\u5b58\u50a8<\/h2>\n\n\n\n<p>\u4f7f\u7528\u5f3a\u5927\u7684\u52a0\u5bc6\u65b9\u6848\u4fdd\u62a4\u9759\u6001\u6570\u636e\uff0c\u5e76\u4fdd\u62a4\u52a0\u5bc6\u5bc6\u94a5\u3002<\/p>\n\n\n\n<p>\u8bf7\u53c2\u9605\u52a0\u5bc6\u548c \u5bc6\u7801\u5b66\u548c\u79d8\u5bc6 \u5b58\u50a8\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u8eab\u4efd\u9a8c\u8bc1\u548c\u6388\u6743<\/h2>\n\n\n\n<p>\u5728\u5904\u7406\u5e26\u6709\u7279\u6743\u64cd\u4f5c\u7684\u8bf7\u6c42\u4e4b\u524d\uff0c\u8bf7\u5bf9 \u8bf7\u6c42\u3002\u6b64\u5916\uff0c\u5728\u8bfb\u53d6\u6216\u5199\u5165\u673a\u5bc6\u4fe1\u606f\u65f6\u5f3a\u5236\u6267\u884c\u8eab\u4efd\u9a8c\u8bc1\u548c\u6388\u6743\u00a0Order\u3001Customer\u00a0\u548c\u00a0PaymentInstrument\u00a0\u7b49\u5bf9\u8c61\u3002<\/p>\n\n\n\n<p>\u8bf7\u53c2\u9605\u8eab\u4efd\u9a8c\u8bc1\u548c \u6388\u6743\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Open Commerce API \uff08OCAPI\uff09 \u548c Salesforce Commerce API \uff08SCAPI\uff09 \u8bbe\u7f6e<\/h2>\n\n\n\n<p>\u9075\u5faa OCAPI \u548c SCAPI \u6743\u9650\u7684\u6700\u5c0f\u7279\u6743\u539f\u5219\u3002\u4e3a\u7528\u6237\u63d0\u4f9b \u6267\u884c\u4efb\u52a1\u6240\u9700\u7684\u6700\u4f4e\u6743\u9650\u96c6\u3002\u8bb0\u5f55\u6743\u9650\uff0c\u4ee5\u53ca \u4e0e\u60a8\u7684\u5ba2\u6237\u5206\u4eab\u5b83\u4eec\u3002<\/p>\n\n\n\n<p>\u8bf7\u53c2\u9605\u00a0SCAPI \u7684 OCAPI\u00a0\u8bbe\u7f6e\u548c\u6388\u6743\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u654f\u611f\u6570\u636e\u5b58\u50a8\u548c\u65e5\u5fd7\u8bb0\u5f55<\/h2>\n\n\n\n<p>\u654f\u611f\u6570\u636e\u662f\u5fc5\u987b\u9632\u6b62\u672a\u7ecf\u6388\u6743\u7684\u8bbf\u95ee\u7684\u4efb\u4f55\u4fe1\u606f\u3002 \u4e0d\u540c\u7684\u6cd5\u89c4\u5c06\u4fe1\u606f\u5f52\u7c7b\u4e3a\u654f\u611f\u6570\u636e\uff0c\u53ef\u80fd\u5305\u62ec\u4ed8\u6b3e \u4eea\u5668\u3001\u53d7\u4fdd\u62a4\u7684\u5065\u5eb7\u4fe1\u606f\u3001\u4e2a\u4eba\u8eab\u4efd\u4fe1\u606f\u3001\u8bbf\u95ee \u4ee4\u724c\u548c\u52a0\u5bc6\u5bc6\u94a5\u3002\u8bb0\u5f55\u5e76\u5411\u5ba2\u6237\u62ab\u9732\u654f\u611f\u6570\u636e\u5217\u8868 \u7531\u89e3\u51b3\u65b9\u6848\u5b58\u50a8\u6216\u5904\u7406\u3002\u7f16\u8f91\u00a0B2C Commerce \u65e5\u5fd7\u6587\u4ef6\u4e2d\u7684\u654f\u611f\u6570\u636e\u3002<\/p>\n\n\n\n<p>\u8bf7\u53c2\u9605\u5b58\u50a8\u654f\u611f\u6570\u636e\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u5bc6\u7801\u5b66<\/h2>\n\n\n\n<p>\u4f7f\u7528\u53d7\u652f\u6301\u7684\u52a0\u5bc6 API\uff0c\u4f8b\u5982\u00a0dw.crypto\u3002\u4e0d\u5b9e\u73b0 \u81ea\u5b9a\u4e49\u52a0\u5bc6\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u5ba2\u6237\u7aef\u811a\u672c<\/h2>\n\n\n\n<p>\u4ece B2C Commerce\u00a0\u58a8\u76d2\u9759\u6001\u5305\u542b\u548c\u63d0\u4f9b\u6240\u6709\u5ba2\u6237\u7aef\u811a\u672c\u3002\u907f\u514d\u52a8\u6001\u52a0\u8f7d \u6765\u81ea\u5185\u5bb9\u5206\u53d1\u7f51\u7edc \uff08CDN\uff09 \u6216\u5176\u4ed6\u7b2c\u4e09\u65b9\u7684\u7b2c\u4e09\u65b9\u811a\u672c\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u4ee3\u7801\u6ce8\u5165<\/h2>\n\n\n\n<p>\u4e0d\u8981\u5c06\u4efb\u4f55\u8f93\u5165\u6570\u636e\u89e3\u91ca\u4e3a\u811a\u672c\u3002\u9759\u6001\u5305\u542b\u6240\u6709\u6e90\u4ee3\u7801\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u7528\u6237\u8f93\u5165\u9a8c\u8bc1<\/h2>\n\n\n\n<p>\u786e\u4fdd\u7528\u6237\u8f93\u5165\u4e0e\u89e3\u51b3\u65b9\u6848\u6240\u9700\u7684\u6570\u636e\u7c7b\u578b\u5b8c\u5168\u76f8\u540c\u3002\u5168\u90e8\u9a8c\u8bc1 \u5904\u7406\u524d\u7684\u7528\u6237\u8f93\u5165\u3002<\/p>\n\n\n\n<p>\u8bf7\u53c2\u9605\u6570\u636e\u9a8c\u8bc1\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u7528\u6237\u8f93\u5165<\/h2>\n\n\n\n<p>\u5728\u4efb\u4f55\u4e0a\u4e0b\u6587\u4e2d\u5448\u73b0\u6240\u6709\u7528\u6237\u63d0\u4f9b\u7684\u5185\u5bb9\u4e4b\u524d\uff0c\u8bf7\u8f6c\u4e49\u5b83\uff0c\u5305\u62ec HTML \u548c JavaScript\u7684\u3002<\/p>\n\n\n\n<p>\u8bf7\u53c2\u9605\u6a21\u677f\u6700\u4f73\u5b9e\u8df5\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u8de8\u7ad9\u70b9\u8bf7\u6c42\u4f2a\u9020 \uff08CSRF\uff09<\/h2>\n\n\n\n<p>\u5728\u6240\u6709\u72b6\u6001\u66f4\u6539\u63a7\u5236\u5668\u4e2d\u5305\u62ec CSRF \u4fdd\u62a4\u3002<\/p>\n\n\n\n<p>\u8bf7\u53c2\u9605\u8de8\u7ad9\u70b9\u8bf7\u6c42\u4f2a\u9020\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u6253\u5f00\u91cd\u5b9a\u5411<\/h2>\n\n\n\n<p>\u5f00\u653e\u91cd\u5b9a\u5411\u7528\u4e8e\u7f51\u7edc\u9493\u9c7c\u653b\u51fb\uff0c\u5c06\u7528\u6237\u91cd\u5b9a\u5411\u5230\u4efb\u4f55 URL\u3002\u4ece\u4e0d\u91cd\u5b9a\u5411\u7528\u6237 \u57fa\u4e8e\u4e0d\u53d7\u4fe1\u4efb\u7684\u6570\u636e\u3002\u9075\u5faa\u5f00\u653e\u91cd\u5b9a\u5411\u653b\u51fb\u4e2d\u7684\u505a\u6cd5\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u5185\u5bb9\u5b89\u5168\u653f\u7b56<\/h2>\n\n\n\n<p>\u8bb0\u5f55\u60a8\u7684\u5185\u5bb9\u5b89\u5168\u7b56\u7565\u5e76\u4e0e\u5ba2\u6237\u5171\u4eab\uff08\u5982\u9002\u7528\uff09\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u8865\u4e01\u548c\u5347\u7ea7<\/h2>\n\n\n\n<p>\u4e3a\u4e86\u7b80\u5316\u4fee\u8865\u7a0b\u5e8f\u7684\u5b89\u88c5\u548c\u5347\u7ea7\uff0c\u8bf7\u6307\u5bfc\u5ba2\u6237\u4f7f\u7528\u5355\u72ec\u7684\u78c1\u5e26\u76d2 \u5c3d\u53ef\u80fd\u8fdb\u884c\u81ea\u5b9a\u4e49\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u73af\u5883<\/h2>\n\n\n\n<p>\u5728\u8bbe\u7f6e\u3001\u7ba1\u7406\u3001 \u5e76\u5f00\u53d1\u60a8\u7684 Salesforce B2C Commerce \u73af\u5883\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u4fdd\u62a4\u60a8\u7684 Tableau Accelerator<\/h2>\n\n\n\n<p>AppExchange \u4e0a\u5217\u51fa\u7684\u6240\u6709 Tableau \u52a0\u901f\u5668\u90fd\u5fc5\u987b\u9075\u5b88\u8fd9\u4e9b\u89c4\u5b9a \u8981\u6c42\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u5141\u8bb8\u7684\u529f\u80fd<\/h2>\n\n\n\n<p>\u5728 Accelerator \u4e2d\u4ec5\u4f7f\u7528\u5185\u7f6e\u7684 Tableau \u529f\u80fd\u3002\u4e0d\u8981\u4f7f\u7528\u4eea\u8868\u677f \u6269\u5c55\u7a0b\u5e8f\u3001\u6765\u81ea Tableau Exchange \u7684\u7b2c\u4e09\u65b9\u8fde\u63a5\u5668\u3001\u5916\u90e8\u7b2c\u4e00\u65b9\u6216\u7b2c\u4e09\u65b9\u8fde\u63a5\u5668 \u4ee3\u7801\u6216\u4e0e\u5916\u90e8\u670d\u52a1\u5668\u7684\u8fde\u63a5\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u94fe\u63a5\u548c URL \u64cd\u4f5c<\/h2>\n\n\n\n<p>\u8bf7\u52ff\u5728 Accelerator \u4e2d\u5305\u542b URL \u64cd\u4f5c\u6216\u5916\u90e8\u94fe\u63a5\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u793a\u4f8b\u6570\u636e\u6765\u6e90<\/h2>\n\n\n\n<p>Tableau \u52a0\u901f\u5668\u4f9d\u9760\u793a\u4f8b\u6570\u636e\u5728\u7528\u6237\u8fde\u63a5\u4e4b\u524d\u586b\u5145\u4eea\u8868\u677f \u4ed6\u4eec\u81ea\u5df1\u7684\u6570\u636e\u3002\u60a8\u53ef\u4ee5\u81ea\u884c\u521b\u5efa\u6b64\u793a\u4f8b\u6570\u636e\uff0c\u4e5f\u53ef\u4ee5\u83b7\u5f97\u4f7f\u7528\u6743\u548c \u5206\u53d1\u793a\u4f8b\u6570\u636e\uff0c\u4ee5\u4fbf\u53ef\u4ee5\u5728 Accelerator \u4e2d\u5bf9\u6e90\u8fdb\u884c\u5f52\u56e0 \u6e05\u5355\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u53bb\u6807\u8bc6\u5316\u6570\u636e<\/h2>\n\n\n\n<p>\u52a0\u901f\u5668\u7684\u6570\u636e\u5fc5\u987b\u7ecf\u8fc7\u53bb\u6807\u8bc6\u5316\u5904\u7406\u3002\u5b83\u4e0d\u80fd\u5305\u542b\u4e2a\u4eba \u53ef\u8bc6\u522b\u7684\u4fe1\u606f\uff0c\u4f8b\u5982\u771f\u5b9e\u4f01\u4e1a\u6216\u5546\u4e1a\u5b9e\u4f53\u7684\u540d\u79f0\u3002\u4f60 \u4e0d\u5e0c\u671b\u7528\u6237\u80fd\u591f\u4ece \u60a8\u7684\u6570\u636e\u96c6\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u6570\u636e\u6253\u5305<\/h2>\n\n\n\n<p>\u521b\u5efa\u6240\u6709\u793a\u4f8b\u6570\u636e\u7684\u5e73\u9762\u63d0\u53d6\uff0c\u5e76\u5c06\u5176\u6253\u5305\u4e3a TWBX \u5de5\u4f5c\u7c3f\u6587\u4ef6\u7684\u4e00\u90e8\u5206 \u4e3a\u60a8\u7684\u52a0\u901f\u5668\u3002\u5728\u6253\u5305\u6570\u636e\u4e4b\u524d\uff0c\u8bf7\u9690\u85cf\u672a\u4f7f\u7528\u7684\u5b57\u6bb5\u3002\u4e0d\u5305\u62ec\u76f4\u64ad \u67e5\u8be2\uff0c\u751a\u81f3\u5bf9\u5e73\u9762\u6587\u4ef6\u3002\u4e0d\u8981\u5b9e\u73b0\u81ea\u5b9a\u4e49\u52a0\u5bc6\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u6570\u636e\u6e90\u51ed\u636e<\/h2>\n\n\n\n<p>\u9a8c\u8bc1\u6570\u636e\u6e90\u4e0e\u57fa\u4e8e\u4e91\u7684\u6570\u636e\u7684\u8fde\u63a5\uff0c\u5e76\u5220\u9664 \u6765\u81ea Accelerator \u7684\u57fa\u4e8e\u4e91\u7684\u6570\u636e\u6e90\u8fde\u63a5\u3002\u7528\u6237\u5fc5\u987b\u8f93\u5165\u81ea\u5df1\u7684 \u7528\u4e8e\u8fde\u63a5\u5230\u6570\u636e\u7684\u51ed\u636e\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u4f5c\u4e3a\u72ec\u7acb\u8f6f\u4ef6\u4f9b\u5e94\u5546 \uff08ISV\uff09 \u5efa\u7acb\u84ec\u52c3\u53d1\u5c55\u7684 Salesforce \u4e1a\u52a1\u3002\u5f00\u59cb\u8005 \u52a0\u5165 Salesforce \u5408\u4f5c\u4f19\u4f34\u8ba1\u5212\u5e76\u719f\u6089\u5bf9\u60a8\u6709\u7528\u7684\u8d44\u6e90 AppExchange ISV \u6216\u54a8\u8be2\u4e4b\u65c5\u3002\u7136\u540e\uff0c\u5b66\u4e60\u8ba1\u5212\u3001\u6784\u5efa\u3001\u5206\u53d1\u3001\u9500\u552e\u548c\u652f\u6301 AppExchange \u5e02\u573a\u7684\u89e3\u51b3\u65b9\u6848\u3002<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[301],"tags":[302],"class_list":["post-4165","post","type-post","status-publish","format-standard","hentry","category-isvforce-","tag-isvforce-"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v21.7 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>ISVforce \u6307\u5357\uff1a\u6784\u5efa\u548c\u5206\u53d1 AppExchange \u89e3\u51b3 \u65b9\u6848 - \u767d\u767d\u968f\u7b14<\/title>\n<meta name=\"description\" content=\"\u4f5c\u4e3a\u72ec\u7acb\u8f6f\u4ef6\u4f9b\u5e94\u5546 \uff08ISV\uff09 \u5efa\u7acb\u84ec\u52c3\u53d1\u5c55\u7684 Salesforce \u4e1a\u52a1\u3002\u5f00\u59cb\u8005 \u52a0\u5165 Salesforce \u5408\u4f5c\u4f19\u4f34\u8ba1\u5212\u5e76\u719f\u6089\u5bf9\u60a8\u6709\u7528\u7684\u8d44\u6e90 AppExchange ISV \u6216\u54a8\u8be2\u4e4b\u65c5\u3002\u7136\u540e\uff0c\u5b66\u4e60\u8ba1\u5212\u3001\u6784\u5efa\u3001\u5206\u53d1\u3001\u9500\u552e\u548c\u652f\u6301 AppExchange \u5e02\u573a\u7684\u89e3\u51b3\u65b9\u6848\u3002\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"http:\/\/www.ponybai.com\/?p=4165\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"ISVforce \u6307\u5357\uff1a\u6784\u5efa\u548c\u5206\u53d1 AppExchange \u89e3\u51b3 \u65b9\u6848 - \u767d\u767d\u968f\u7b14\" \/>\n<meta property=\"og:description\" content=\"\u4f5c\u4e3a\u72ec\u7acb\u8f6f\u4ef6\u4f9b\u5e94\u5546 \uff08ISV\uff09 \u5efa\u7acb\u84ec\u52c3\u53d1\u5c55\u7684 Salesforce \u4e1a\u52a1\u3002\u5f00\u59cb\u8005 \u52a0\u5165 Salesforce \u5408\u4f5c\u4f19\u4f34\u8ba1\u5212\u5e76\u719f\u6089\u5bf9\u60a8\u6709\u7528\u7684\u8d44\u6e90 AppExchange ISV \u6216\u54a8\u8be2\u4e4b\u65c5\u3002\u7136\u540e\uff0c\u5b66\u4e60\u8ba1\u5212\u3001\u6784\u5efa\u3001\u5206\u53d1\u3001\u9500\u552e\u548c\u652f\u6301 AppExchange \u5e02\u573a\u7684\u89e3\u51b3\u65b9\u6848\u3002\" \/>\n<meta property=\"og:url\" content=\"http:\/\/www.ponybai.com\/?p=4165\" \/>\n<meta property=\"og:site_name\" content=\"\u767d\u767d\u968f\u7b14\" \/>\n<meta property=\"article:published_time\" content=\"2024-03-04T11:12:24+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-12-08T13:48:38+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/www.ponybai.com\/wp-content\/uploads\/2023\/11\/cropped-weixin2.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"248\" \/>\n\t<meta property=\"og:image:height\" content=\"248\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"ponybai\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"ponybai\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"http:\/\/www.ponybai.com\/?p=4165#article\",\"isPartOf\":{\"@id\":\"http:\/\/www.ponybai.com\/?p=4165\"},\"author\":{\"name\":\"ponybai\",\"@id\":\"http:\/\/www.ponybai.com\/#\/schema\/person\/935c7592c850c65e1e5eba4530dbf883\"},\"headline\":\"ISVforce \u6307\u5357\uff1a\u6784\u5efa\u548c\u5206\u53d1 AppExchange \u89e3\u51b3 \u65b9\u6848\",\"datePublished\":\"2024-03-04T11:12:24+00:00\",\"dateModified\":\"2023-12-08T13:48:38+00:00\",\"mainEntityOfPage\":{\"@id\":\"http:\/\/www.ponybai.com\/?p=4165\"},\"wordCount\":785,\"publisher\":{\"@id\":\"http:\/\/www.ponybai.com\/#\/schema\/person\/935c7592c850c65e1e5eba4530dbf883\"},\"keywords\":[\"ISVforce \u6307\u5357\"],\"articleSection\":[\"ISVforce \u6307\u5357\"],\"inLanguage\":\"zh-Hans\"},{\"@type\":\"WebPage\",\"@id\":\"http:\/\/www.ponybai.com\/?p=4165\",\"url\":\"http:\/\/www.ponybai.com\/?p=4165\",\"name\":\"ISVforce \u6307\u5357\uff1a\u6784\u5efa\u548c\u5206\u53d1 AppExchange \u89e3\u51b3 \u65b9\u6848 - \u767d\u767d\u968f\u7b14\",\"isPartOf\":{\"@id\":\"http:\/\/www.ponybai.com\/#website\"},\"datePublished\":\"2024-03-04T11:12:24+00:00\",\"dateModified\":\"2023-12-08T13:48:38+00:00\",\"description\":\"\u4f5c\u4e3a\u72ec\u7acb\u8f6f\u4ef6\u4f9b\u5e94\u5546 \uff08ISV\uff09 \u5efa\u7acb\u84ec\u52c3\u53d1\u5c55\u7684 Salesforce \u4e1a\u52a1\u3002\u5f00\u59cb\u8005 \u52a0\u5165 Salesforce \u5408\u4f5c\u4f19\u4f34\u8ba1\u5212\u5e76\u719f\u6089\u5bf9\u60a8\u6709\u7528\u7684\u8d44\u6e90 AppExchange ISV \u6216\u54a8\u8be2\u4e4b\u65c5\u3002\u7136\u540e\uff0c\u5b66\u4e60\u8ba1\u5212\u3001\u6784\u5efa\u3001\u5206\u53d1\u3001\u9500\u552e\u548c\u652f\u6301 AppExchange \u5e02\u573a\u7684\u89e3\u51b3\u65b9\u6848\u3002\",\"breadcrumb\":{\"@id\":\"http:\/\/www.ponybai.com\/?p=4165#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"http:\/\/www.ponybai.com\/?p=4165\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"http:\/\/www.ponybai.com\/?p=4165#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"http:\/\/www.ponybai.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"ISVforce \u6307\u5357\uff1a\u6784\u5efa\u548c\u5206\u53d1 AppExchange \u89e3\u51b3 \u65b9\u6848\"}]},{\"@type\":\"WebSite\",\"@id\":\"http:\/\/www.ponybai.com\/#website\",\"url\":\"http:\/\/www.ponybai.com\/\",\"name\":\"\u767d\u767d\u968f\u7b14\",\"description\":\"Salesforce\u5b98\u65b9\u8bb2\u5e08\",\"publisher\":{\"@id\":\"http:\/\/www.ponybai.com\/#\/schema\/person\/935c7592c850c65e1e5eba4530dbf883\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"http:\/\/www.ponybai.com\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"zh-Hans\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"http:\/\/www.ponybai.com\/#\/schema\/person\/935c7592c850c65e1e5eba4530dbf883\",\"name\":\"ponybai\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"http:\/\/www.ponybai.com\/#\/schema\/person\/image\/\",\"url\":\"http:\/\/www.ponybai.com\/wp-content\/uploads\/2025\/03\/cropped-Ihsans-WeChatQR.jpg\",\"contentUrl\":\"http:\/\/www.ponybai.com\/wp-content\/uploads\/2025\/03\/cropped-Ihsans-WeChatQR.jpg\",\"width\":248,\"height\":248,\"caption\":\"ponybai\"},\"logo\":{\"@id\":\"http:\/\/www.ponybai.com\/#\/schema\/person\/image\/\"},\"sameAs\":[\"http:\/\/121.37.188.161\"],\"url\":\"http:\/\/www.ponybai.com\/?author=1\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"ISVforce \u6307\u5357\uff1a\u6784\u5efa\u548c\u5206\u53d1 AppExchange \u89e3\u51b3 \u65b9\u6848 - \u767d\u767d\u968f\u7b14","description":"\u4f5c\u4e3a\u72ec\u7acb\u8f6f\u4ef6\u4f9b\u5e94\u5546 \uff08ISV\uff09 \u5efa\u7acb\u84ec\u52c3\u53d1\u5c55\u7684 Salesforce \u4e1a\u52a1\u3002\u5f00\u59cb\u8005 \u52a0\u5165 Salesforce \u5408\u4f5c\u4f19\u4f34\u8ba1\u5212\u5e76\u719f\u6089\u5bf9\u60a8\u6709\u7528\u7684\u8d44\u6e90 AppExchange ISV \u6216\u54a8\u8be2\u4e4b\u65c5\u3002\u7136\u540e\uff0c\u5b66\u4e60\u8ba1\u5212\u3001\u6784\u5efa\u3001\u5206\u53d1\u3001\u9500\u552e\u548c\u652f\u6301 AppExchange \u5e02\u573a\u7684\u89e3\u51b3\u65b9\u6848\u3002","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"http:\/\/www.ponybai.com\/?p=4165","og_locale":"zh_CN","og_type":"article","og_title":"ISVforce \u6307\u5357\uff1a\u6784\u5efa\u548c\u5206\u53d1 AppExchange \u89e3\u51b3 \u65b9\u6848 - \u767d\u767d\u968f\u7b14","og_description":"\u4f5c\u4e3a\u72ec\u7acb\u8f6f\u4ef6\u4f9b\u5e94\u5546 \uff08ISV\uff09 \u5efa\u7acb\u84ec\u52c3\u53d1\u5c55\u7684 Salesforce \u4e1a\u52a1\u3002\u5f00\u59cb\u8005 \u52a0\u5165 Salesforce \u5408\u4f5c\u4f19\u4f34\u8ba1\u5212\u5e76\u719f\u6089\u5bf9\u60a8\u6709\u7528\u7684\u8d44\u6e90 AppExchange ISV \u6216\u54a8\u8be2\u4e4b\u65c5\u3002\u7136\u540e\uff0c\u5b66\u4e60\u8ba1\u5212\u3001\u6784\u5efa\u3001\u5206\u53d1\u3001\u9500\u552e\u548c\u652f\u6301 AppExchange \u5e02\u573a\u7684\u89e3\u51b3\u65b9\u6848\u3002","og_url":"http:\/\/www.ponybai.com\/?p=4165","og_site_name":"\u767d\u767d\u968f\u7b14","article_published_time":"2024-03-04T11:12:24+00:00","article_modified_time":"2023-12-08T13:48:38+00:00","og_image":[{"width":248,"height":248,"url":"http:\/\/www.ponybai.com\/wp-content\/uploads\/2023\/11\/cropped-weixin2.jpg","type":"image\/jpeg"}],"author":"ponybai","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"ponybai","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"10 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"http:\/\/www.ponybai.com\/?p=4165#article","isPartOf":{"@id":"http:\/\/www.ponybai.com\/?p=4165"},"author":{"name":"ponybai","@id":"http:\/\/www.ponybai.com\/#\/schema\/person\/935c7592c850c65e1e5eba4530dbf883"},"headline":"ISVforce \u6307\u5357\uff1a\u6784\u5efa\u548c\u5206\u53d1 AppExchange \u89e3\u51b3 \u65b9\u6848","datePublished":"2024-03-04T11:12:24+00:00","dateModified":"2023-12-08T13:48:38+00:00","mainEntityOfPage":{"@id":"http:\/\/www.ponybai.com\/?p=4165"},"wordCount":785,"publisher":{"@id":"http:\/\/www.ponybai.com\/#\/schema\/person\/935c7592c850c65e1e5eba4530dbf883"},"keywords":["ISVforce \u6307\u5357"],"articleSection":["ISVforce \u6307\u5357"],"inLanguage":"zh-Hans"},{"@type":"WebPage","@id":"http:\/\/www.ponybai.com\/?p=4165","url":"http:\/\/www.ponybai.com\/?p=4165","name":"ISVforce \u6307\u5357\uff1a\u6784\u5efa\u548c\u5206\u53d1 AppExchange \u89e3\u51b3 \u65b9\u6848 - \u767d\u767d\u968f\u7b14","isPartOf":{"@id":"http:\/\/www.ponybai.com\/#website"},"datePublished":"2024-03-04T11:12:24+00:00","dateModified":"2023-12-08T13:48:38+00:00","description":"\u4f5c\u4e3a\u72ec\u7acb\u8f6f\u4ef6\u4f9b\u5e94\u5546 \uff08ISV\uff09 \u5efa\u7acb\u84ec\u52c3\u53d1\u5c55\u7684 Salesforce \u4e1a\u52a1\u3002\u5f00\u59cb\u8005 \u52a0\u5165 Salesforce \u5408\u4f5c\u4f19\u4f34\u8ba1\u5212\u5e76\u719f\u6089\u5bf9\u60a8\u6709\u7528\u7684\u8d44\u6e90 AppExchange ISV \u6216\u54a8\u8be2\u4e4b\u65c5\u3002\u7136\u540e\uff0c\u5b66\u4e60\u8ba1\u5212\u3001\u6784\u5efa\u3001\u5206\u53d1\u3001\u9500\u552e\u548c\u652f\u6301 AppExchange \u5e02\u573a\u7684\u89e3\u51b3\u65b9\u6848\u3002","breadcrumb":{"@id":"http:\/\/www.ponybai.com\/?p=4165#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["http:\/\/www.ponybai.com\/?p=4165"]}]},{"@type":"BreadcrumbList","@id":"http:\/\/www.ponybai.com\/?p=4165#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"http:\/\/www.ponybai.com\/"},{"@type":"ListItem","position":2,"name":"ISVforce \u6307\u5357\uff1a\u6784\u5efa\u548c\u5206\u53d1 AppExchange \u89e3\u51b3 \u65b9\u6848"}]},{"@type":"WebSite","@id":"http:\/\/www.ponybai.com\/#website","url":"http:\/\/www.ponybai.com\/","name":"\u767d\u767d\u968f\u7b14","description":"Salesforce\u5b98\u65b9\u8bb2\u5e08","publisher":{"@id":"http:\/\/www.ponybai.com\/#\/schema\/person\/935c7592c850c65e1e5eba4530dbf883"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"http:\/\/www.ponybai.com\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"zh-Hans"},{"@type":["Person","Organization"],"@id":"http:\/\/www.ponybai.com\/#\/schema\/person\/935c7592c850c65e1e5eba4530dbf883","name":"ponybai","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"http:\/\/www.ponybai.com\/#\/schema\/person\/image\/","url":"http:\/\/www.ponybai.com\/wp-content\/uploads\/2025\/03\/cropped-Ihsans-WeChatQR.jpg","contentUrl":"http:\/\/www.ponybai.com\/wp-content\/uploads\/2025\/03\/cropped-Ihsans-WeChatQR.jpg","width":248,"height":248,"caption":"ponybai"},"logo":{"@id":"http:\/\/www.ponybai.com\/#\/schema\/person\/image\/"},"sameAs":["http:\/\/121.37.188.161"],"url":"http:\/\/www.ponybai.com\/?author=1"}]}},"_links":{"self":[{"href":"http:\/\/www.ponybai.com\/index.php?rest_route=\/wp\/v2\/posts\/4165","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.ponybai.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.ponybai.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.ponybai.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.ponybai.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=4165"}],"version-history":[{"count":4,"href":"http:\/\/www.ponybai.com\/index.php?rest_route=\/wp\/v2\/posts\/4165\/revisions"}],"predecessor-version":[{"id":4169,"href":"http:\/\/www.ponybai.com\/index.php?rest_route=\/wp\/v2\/posts\/4165\/revisions\/4169"}],"wp:attachment":[{"href":"http:\/\/www.ponybai.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=4165"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.ponybai.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=4165"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.ponybai.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=4165"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}