ホームページ  >  記事  >  WeChat アプレット  >  WeChat ミニ プログラム認証ログイン プロセスのタイミング - 詳細なグラフ説明

WeChat ミニ プログラム認証ログイン プロセスのタイミング - 詳細なグラフ説明

php是最好的语言
php是最好的语言オリジナル
2018-07-25 11:37:144434ブラウズ

私は現在、WeChat アプレット開発プロジェクトに取り組んでいます。シナリオのレイアウト: 同じ WeChat オープン プラットフォームで同じ主題を持つ APP と WeChat ミニ プログラムは、同じビジネスを完了します。ユーザーがアプリまたは WeChat ミニ プログラムに入るとき、現在のユーザー ID を確認してログインを完了するためにユーザーの UnionID を取得する必要があります。ミニ プログラムの「ユーザー情報の取得」API (getUserInfo) の呼び出しメソッドが以前と比べて大幅に更新されました。ユーザー認証とログインをエレガントに実装することが非常に重要です。以下は、WeChat ミニ プログラム認証ログイン プロセスの実装です。開発のアイデアと概要を以下に共有します。

1. WeChat アプレットのログイン プロセスのタイミング

WeChat ミニ プログラム認証ログイン プロセスのタイミング - 詳細なグラフ説明

手順:

  1. アプレットは、wx.login() を呼び出して一時的なログイン資格情報コードを取得し、それを開発者サーバーに返します

  2. 開発者サーバーのコードユーザーの一意の識別子 openid とセッションキー session_key と引き換えに。

  3. 一時的なログイン認証コードは 1 回のみ使用できます

openid とは何ですか?

フォロワーが公式アカウントと対話してメッセージを生成すると、公式アカウントはフォロワーの OpenID (暗号化された WeChat ID、それぞれの各公式アカウントのユーザーの OpenID は一意です。同じユーザーの OpenID は公式アカウントごとに異なります。 ——WeChatパブリックプラットフォーム開発者ドキュメント
  • 一般ユーザーの識別は現在の公式アカウントに固有です

  • 異なる公式アカウント、同じユーザーは異なるopenIDを持っています

これは単に

openid = hash(uid + app_id)
として理解できます

ユニオンIDとは何ですか?

開発者が複数のモバイル アプリケーション、Web サイト アプリケーション、およびパブリック アカウント (ミニ プログラムを含む) を持っている場合、同じ WeChat 内にモバイル アプリケーション、Web サイト アプリケーション、およびパブリック アカウントが存在する限り、ユーザーは UnionID によって一意に区別できます。オープン プラットフォーム アカウント、パブリック アカウント (ミニ プログラムを含む) の場合、ユーザーの UnionID は一意です。言い換えれば、同じユーザーの場合、同じ WeChat オープン プラットフォーム上の異なるアプリケーションの UnionID は同じです。 UnionID メカニズムの説明

開発者が複数のモバイル アプリケーション、Web サイト アプリケーション、パブリック アカウント間でユーザー アカウントを統合する必要がある場合は、WeChat オープン プラットフォーム (open.weixin.qq.com) にアクセスしてパブリック アカウントをバインドする必要があります。上記のニーズを満たすための UnionID メカニズム。

  • 1つのWeChatオープンプラットフォームアカウントの下に複数のモバイルアプリケーション、ウェブサイトアプリケーション、パブリックアカウント、ミニプログラムを持つことができます

  • 同じ傘下のモバイルアプリケーション、ウェブサイトアプリケーション、パブリックアカウント(ミニプログラムを含む)である限り、 WeChat オープン プラットフォーム アカウント プログラム)、ユーザーの UnionID は一意です。

オープンプラットフォーム上のユーザーの一意の識別子

それは次のように簡単に理解できます:

unionid = hash(uid + 开放平台id)

要約すると
WeChatは異なるアプリケーションの異なるユーザーに対して一意のopenIdを持っていますが、ユーザーが同じユーザーである場合は、unionid で区別する必要があります。通常、独自のバックエンドには独自のユーザー テーブルがあり、各ユーザーは異なるユーザー ID を持ちます。つまり、同じ WeChat オープン プラットフォームにおける同じ主題の同じユーザーのアプリケーションは、同じ userid、unionid、および異なる openid に対応します。したがって、ユーザーがログインするときは、WeChat から返された UnionID のみを頼りに、それが同じユーザーであるかどうかを判断し、それをユーザー テーブルに関連付けて、対応するユーザー ID を取得します。

2. WeChat ミニ プログラムで UnionID を取得するには?

開発者アカウントにバインドされたミニ プログラムは、次の 3 つの方法で UnionID を取得できます。

  1. インターフェイス wx.getUserInfo を呼び出して、復号化されたデータから UnionID を取得します。このインターフェイスにはユーザーの承認が必要であることに注意してください。ユーザーが承認を拒否した場合、開発者は状況を適切に処理する必要があります。

  2. 開発者アカウントの下に同じ主題の公開アカウントがあり、ユーザーがすでにその公開アカウントをフォローしている場合。開発者は、ユーザーの許可を再び得ることなく、wx.login を通じてユーザーの UnionID を直接取得できます。

  3. 開発者アカウント配下に同一法人の公式アカウントまたはモバイルアプリが存在し、ユーザーがその公式アカウントまたはモバイルアプリへのログインを許可されている場合。開発者は、ユーザーに再度認証を求めることなく、wx.login を通じてユーザーの UnionID を直接取得することもできます。

WeChat ミニ プログラム認証ログイン プロセスのタイミング - 詳細なグラフ説明

ユーザーが条件 2 と 3 を満たしている場合、開発者は wx.login を通じてユーザーの UnionID を直接取得できます。そうでない場合は、インターフェースを呼び出す必要がありますwx.getUserInfo。ユーザーが承認を拒否しました。

3. ログインのベストプラクティス

  1. wx.login を呼び出してコードを取得します。

  2. wx.getSettingを使用してユーザーの認証ステータスを取得します

  • ユーザーが認証されている場合は、API wx.getUserInfoを直接呼び出してユーザーの最新情報を取得します

  • ユーザーが認証されていない場合は、インターフェイスにボタン プロンプトが表示されます。ユーザーがログインし、クリックして承認すると、ユーザーの最新情報が取得されます。

  • 取得したユーザー データを、wx.login によって返されたコードとともにバックエンドに渡します

  • WeChat ミニ プログラム認証ログイン プロセスのタイミング - 詳細なグラフ説明

    ajax() をカプセル化します

    実際のビジネス シナリオでは、ユーザーがミニ プログラムに入るときに、ログインせずに製品を通常どおり閲覧でき、ミニ プログラムの基本を理解していること。ユーザーに許可を求めるボックスを直接ポップアップ表示しないでください。そうしないと、ユーザーの邪魔になり、新しいユーザーが使用できなくなる可能性があります。いくつかの高度な機能やシナリオでは、必要なときにユーザーに認証を求めるため、ユーザーが認証される可能性が大幅に高まります。
    ajax でログインロジックをカプセル化する
    プロセス:
    WeChat ミニ プログラム認証ログイン プロセスのタイミング - 詳細なグラフ説明

    カプセル化の意味
    現在のインターフェースがログインを必要とするかどうか、ユーザーが承認されているかどうか、すべてのリクエストが直接呼び出されるajax()、すべてのログインに注意を払う必要がなくなりました。必要に応じて認証プロセスが完了します。ビジネスを拡大するときは、ビジネスの実行だけに集中する必要がある、ミニ プログラムの入り口ページが追加されました。

    参考資料

    • ミニプログラム •小ネタ(4) - ユーザー情報の取得

    • 基本的なユーザー情報の取得(UnionIDの仕組み)

    • UnionIDの仕組みの説明

    関連するおすすめ:

    WeChatミニプログラム開発ドキュメント

    WeChat ミニプログラム開発に関する実践的なビデオチュートリアル

    WeChat ミニプログラム開発に関するビデオチュートリアル

    以上がWeChat ミニ プログラム認証ログイン プロセスのタイミング - 詳細なグラフ説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    声明:
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。