WeChat バックエンドとして国内の無料クラウド リソースを見つけるために、SinaAppEngine (SAE) を 1 日かけて試してみましたが、デバッグが不便すぎて、ユーザー エクスペリエンスも悪かったです。メディア企業として、Sina の技術的スキルは、Amazon が AWS を立ち上げることはできても、Sina はそれができないのです。より良い選択肢は Baidu BaiduAppEngine (BAE) ですが、最近有料化が開始されましたが、少なくとも外国人が約束した無料のものは常に無料で信頼できるので、安心して Force.com に戻る方が良いでしょう。
最初のステップは、force.com アカウントを申請することです。www.salesforce.com から顧客アカウントを申請する場合は、開発者には適していません。 2 番目のステップは、WeChat サービス インターフェイスとして機能する Apex Rest クラスを作成することです。ここで作成されるクラスは WeChatRestController で、Rest インターフェイス名は WeChatRest です:
@RestResource(urlMapping='/WeChatRest/*') global with sharing class WeChatRestController{ @HttpGet global static void doGet(){ String signature = RestContext.request.params.get('signature'); String timestamp = RestContext.request.params.get('timestamp'); String nonce = RestContext.request.params.get('nonce'); String echostr = RestContext.request.params.get('echostr'); System.debug(echostr + ' - ' + timestamp); RestContext.response.addHeader('Content-Type', 'text/plain'); RestContext.response.responseBody = Blob.valueOf(echostr); //return echostr; } }
このインターフェイスを使用して、WeChat で必要な URL を設定します。設定中の URL は次のとおりです:
追加説明: この記事の公開後、Tencent はプレーン テキスト モード、互換モード、セキュリティ モードをサポートする「メッセージ暗号化および復号キー」を開始しました。プレーン テキスト モードでは、Tencent はプレーン テキストの XML メッセージをインターフェイスにプッシュします。互換モードでは、プレーン テキストの XML メッセージと暗号化された XML メッセージの両方が存在し、より高度なセキュリティ サポートがユーザーに提供されます。この記事とその後のすべての関連記事ではクリア テキスト モードを使用します。
Tencent は、Get メソッドを通じて 4 つのパラメーターをこの URL に送信します。URL の形式は次のとおりです (例のみ): https://msd-developer-edition.ap1.force.com/services/apexrest/WeChatRest ?signature= GenePoint&echostr=test×tamp=111&nonce=222 URL によって返された値が 4 つのパラメーターの echostr 値と一致する場合、Tencent は検証が成功したとみなします。それらが一致しない場合、検証は失敗したとみなされ、構成は実行できません。怠惰な方法は値を直接返すことですが、これには URL さえも他人に悪用される可能性があります。ここでの echostr の値は、実際には Tencent バックエンドでユーザーが設定したトークンにタイムスタンプと nonce パラメータの値を加えて、特定のアルゴリズムに従って計算されます。特定のアルゴリズムについては注意事項を参照してください。ここで詳細を説明します。コードで説明する必要があるのは、echostr が直接返された場合、force.com はデフォルトで XML 構造のコンテンツであると判断し、echostr 値と等しくないものと判断されるということです。構成の失敗。これを行うには、Blog.valueOf メソッドを使用してテキスト情報に直接変換する必要があります。 3 番目のステップは、この URL へのパブリック ネットワーク アクセスを有効にするように Site.com を設定することです。force.com クラスと Web ページは、アクセスする前にデフォルトでユーザー認証を必要とします。ただし、サイト経由でこの URL へのパブリック ネットワーク アクセスを有効にすることはできます。これを行うには、まずドメイン名を作成する必要があります。「開発」->「サイト」と入力し、作成するドメイン名を入力します。たとえば、作成者のドメイン名は johnson0001 です:
http://johnson0001-developer -edition.ap1.force.com
作成が成功したら、次のステップはサイトを作成することです:
次のサイト情報入力画面でサイトラベルとサイト名を入力します。 、任意のページを「アクティブ サイトのホームページ」として選択します (ここで Web ページを構築する必要はありません。任意のページを選択するだけです)。その他のオプションは変更せず、「保存」ボタンをクリックします。次の画面で [パブリック アクセス設定] ボタンをクリックします。次の画面で [Apex クラス アクセスを有効にする] を見つけて、編集ボタンをクリックします。
WeChatRestController クラスを右側のリストに追加します。このクラスが匿名パブリック アクセスをサポートできるようにします:
最後に、サイトのホームページに戻り、[アクティブ化] ボタンをクリックしてサイトをアクティブ化します。この時点で、次の URL を通じて開発したインターフェイスにアクセスできます (注)。 URL が有効になるまでに数分かかる場合があります):
https://johnson0001-developer-edition.ap1.force.com/services/apexrest/WeChatRest
ステップ 4 、Tencent バックエンドを構成します (開発中)モードで、この URL を入力し、任意のトークンを入力して、送信ボタンをクリックします。Tencent から成功のプロンプトが表示されたら、構成は正常に完了しています:
URL Echostr アルゴリズムを確認します: 1. トークン (Tencent のバックエンドでユーザーが設定した値)、タイムスタンプ (Tencent が URL を要求したときに渡されたタイムスタンプ値)、および nonce (Tencent が URL を要求したときに渡された nonce 値) を結合します。 ) 以下のようにアルファベット順に並べます; 2. 並べ替えた後、文字列に連結します; 3. この文字列を sha1 アルゴリズムで変換した結果が正常であれば、それが echostr の値になります。 Force.com WeChat 開発シリーズのバックグラウンド構成。