元のアドレス: http://hello1010.com/bind-wechat/
二次元バーコード/QRコード(二次元バーコード)とは、平面(黒色)に印刷された特定の幾何学的図形です2次元方向に配置された白いグラフィックスはデータのシンボル情報を記録し、コーディングではコンピュータの内部ロジックの基礎となる「0」と「1」のビットストリームの概念が巧みに利用され、いくつかの2進数が使用されます。幾何学的図形は文字の数値情報を表現し、画像入力装置や光電走査装置を介して自動的に読み取られ、自動情報処理を実現します
近年、特に普及しているのがQRコードです。 WeChat QR コード決済、WeChat QR コード ログイン、WeChat QR コード名刺など、WeChat の QR コードの宣伝と応用は水の中のアヒルのようなものであると言えます。 O2OにおいてQRコードはオンラインとオフラインを繋ぐ重要な役割を果たしていると言えます。シャオ・マー兄弟はまた、「QRコードはオンラインでもオフラインでも重要な入り口である」と述べた。
現在、多くの Web サイトが独自の完全なユーザー アカウント システムを確立しています。WeChat の時代では、トレンドに従うのではなく、ユーザーを容易にするために WeChat パブリック アカウントの開発と運用を検討する必要があります。 O2O 優れたソリューションであり、さらに重要なことに、WeChat には良性で継続的に改善されるエコロジカル チェーンがあります。
ユーザーが WeChat 公式アカウントをフォローする場合、やり取り中に、注文など、ユーザーの身元情報 (Web サイト上のアカウント情報に相当) を取得する必要がある場合があります。公式アカウント、ご注文のお問い合わせなどそこで次の質問が生じます: 同じユーザーの場合、WeChat 公式アカウント ユーザー (openid) と Web サイト ユーザー (userid) の間に対応関係を確立するにはどうすればよいでしょうか。このプロセスはバインディングと呼ばれます。
議論を簡単にするために、次の 2 つのシナリオを要約しました:
1. ユーザーは Web サイト ユーザーとして登録しましたが、まだ WeChat パブリックをフォローしていません。番号;
2. ユーザーは登録していませんが、WeChat 公式アカウントをフォローしています。
上記の 2 つの状況については、以下で個別に説明します。
シナリオ1
ユーザーは当社のWebサイトユーザーとして登録しましたが、まだWeChat公式アカウントをフォローしていません。ここで、ユーザーはまず Web サイトにログインし、次に個人設定などの適切な場所にバインディング エントリを提供する必要があります。バインドプロセスは次のとおりです:
ここでWeChatのQRコード生成機能を使用する必要があります: パラメーターを使用してQRコードを生成します
WeChat QRコードについて、公式ドキュメントには次のように記載されています。
現在、QR コードには一時的な QR コードと永続的な QR コードの 2 種類があり、前者には最大 1800 秒の有効期限がありますが、より大きな数を生成でき、後者には有効期限がありません。 、数値は小さいです (現在、パラメーターは 1 ~ 100000 のみをサポートしています)。 2 つの QR コードはそれぞれ、アカウント バインディング、ユーザー ソース統計、およびその他のシナリオに適しています。
明らかに、一時的な QR コードを使用する方が適切です。これは、ユーザーがページを更新するたびに生成される可能性があります。
QR コードにはシーン値 (scene_id) を含めることができるため、ユーザーがシーン値を含む QR コードをスキャンすると、WeChat サーバーはシーン値を取得した後、シーン値を独自のサーバーにプッシュします。検証とバインディングロジックを実行できます。 注: QR コードを生成するには、認定されたサービス番号が必要です。
完全なバインドプロセスは次のようになります:
①ユーザーはWebページにログインし、「WeChatアカウントをバインド」をクリックします
②バックグラウンドでWeChatインターフェースを使用してQRコードリンクを生成し、戻ります。それをフロントエンド ディスプレイに表示し、シーン値 A とユーザーの間の対応関係を確立します。
③ユーザーは QR コードをスキャンし、クリックして WeChat パブリック アカウントをフォローします (すでにフォローしている場合は、直接④にジャンプします)。
④バックグラウンドは、WeChatサーバーによってプッシュされたシーン値Aを受け取ります。
⑤バックグラウンドは、(②で確立された対応関係に応じて)対応するユーザーIDをクエリします。
⑥ユーザーのuseridと、 WeChat ユーザー openid;
⑦ ユーザーの WeChat クライアント " プロンプトに「バインド成功」をプッシュします。
⑧ フロント ページにバインドが完了したことを通知し、ページを更新して、WeChat アカウント情報を返します。完全なバインディング。
このうち、②の「シーン値Aとユーザーの対応関係を確立する」では、ユーザーが既にログインしているため、ユーザーが「WeChatアカウントをバインドする」をクリックした際に、一時的なシーンを割り当てることができます。背景の値 A ユーザー ID との関係。ユーザー数が少ない Web サイトの場合は、PHP で apc を直接使用してキャッシュし、有効期限 (一時的な QR コードの有効期限と同じ) を設定できます。
⑧では、httpにはプッシュ機構がないため、最も簡単な方法は、バインドが完了したかどうかをポーリングして確認し、バインドが完了した後にページを更新することです。
バインディングが完了した後、ユーザーが WeChat 公式アカウントと対話すると、openid に基づいて対応するユーザー ID が見つかり、身元認識が完了します。前述した発注や注文照会もすべて実現可能です。
バインドプロセス全体は複雑ではなく、実装する際に技術的な困難はそれほどありません。最も重要なのはアイデアです。
シナリオ 2
シナリオ 2 では、ユーザーが WeChat クライアント Web ページでログイン/登録を完了する必要があるため、操作が少し複雑になります。したがって、登録プロセスが複雑で面倒な場合は、使用しないことをお勧めします。
プロセス:
上記のバインドプロセスは登録プロセスを統合しているため、より複雑に見えます。実装はそれほど難しくありません。アカウントのバインドにはユーザー情報のセキュリティが関係するため、次の 2 つの問題を考慮する必要があります。
1. ログイン/登録リンク。独自のサーバーで生成する必要があり、他人が偽造することはできません。有効性については、WeChat の検証サーバー アドレスを参照できます。したがって、比較的安全なログイン リンクは次のようになります:
http://api.hello1010.com/wechat/login.html?openid=x1&signature=x2×tamp=x3&nonce=x4&echostr&=x5
署名コードを検証:
<code><span>private function checkSignature() { $signature = $_GET["signature"]; $timestamp = $_GET["timestamp"]; $nonce = $_GET["nonce"]; $token = TOKEN; $tmpArr = array($token, $timestamp, $nonce); sort($tmpArr, SORT_STRING); $tmpStr = implode( $tmpArr ); $tmpStr = sha1( $tmpStr ); if( $tmpStr == $signature ){ return true; }else{ return false; } } </span></code>
トークンの値は、WeChat 公式アカウントのバックエンドのものと同じにすることも、より安全なものに変更することもできます。
2. openid が信頼できることを確認する方法
次のシナリオを考えてみましょう: ユーザー A がログイン ページに入り、ログイン リンクをブラウザにコピーし、openid をユーザー B の openid に置き換え、ユーザー A のアカウント パスワード ログを使用します。で。これはユーザー A の userid とユーザー B の openid をバインドしますが、これは明らかに安全ではありません。
openid を暗号化するなど、暗号化方法が機密に保たれている場合、ユーザーは暗号化された openid を偽造できません。 openid を暗号化したくない場合は、リンクを生成するときにサーバー側で openid と署名の間の対応関係を確立できます。ユーザーが openid を改ざんした場合、検証は通過しません。
クライアントから送信された情報を決して信用しないでください。
拡張アプリケーション
バインディングが完了したら、いくつかの簡単なアプリケーションを作成できます。たとえば、会社はオフライン ロードショー イベントを開催する必要があり、参加するには登録とサインインが必要です。
これは、WeChat を使用して実装できる典型的な O2O の例です。プロセスは次のとおりです。
このうち、「バインディング ユーザー サブプロセス」はシナリオ 2 のプロセスです。登録のやり取りはビジネスごとに異なりますので、ここでは説明しません。
バインドが完了したユーザーの場合、イベントに参加するために必要なのは、WeChat を通じて登録し、QR コードをスキャンしてサインインすることだけです。操作は非常にスムーズです。
ご質問がございましたら、お気軽にお問い合わせください。
上記では、関連する側面を含めて WeChat アカウントのバインディングを紹介しましたが、PHP チュートリアルに興味のある友人に役立つことを願っています。