ホームページ  >  記事  >  WeChat アプレット  >  WeChatアプレットの認証ログイン処理の説明

WeChatアプレットの認証ログイン処理の説明

不言
不言オリジナル
2018-07-23 11:12:2612959ブラウズ

この記事の内容は、WeChat アプレットの認証ログインプロセスを説明するもので、必要な友人が参照できるようになります。

同社のビジネスは発展しており、最近 WeChat アプレットの開発を完了しました。シナリオは次のとおりです。同じ WeChat オープン プラットフォームで同じ件名を持つ APP と WeChat アプレットは、同じビジネスを完了します。ユーザーがアプリまたは WeChat アプレットに入るとき、ユーザーの UnionID を取得して現在のユーザー ID を確認し、完了する必要があります。ログイン。ミニ プログラムの「ユーザー情報の取得」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 を直接取得することもできます。


ユーザーが条件 2 と 3 を満たしている場合、開発者は wx.login を通じてユーザーの UnionID を直接取得できます。そうでない場合は、インターフェースを呼び出す必要がありますwx.getUserInfo。さらに注意すべき点は、ユーザーの拒否を適切に処理することです。許可する条件。

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

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

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

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

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

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


  • Encapsulate ajax()

    実際のビジネスシナリオでは、ユーザーが使用するときに小さな値を入力することを願っていますこのプログラムを使用すると、ログインせずに通常どおり製品を閲覧でき、ミニ プログラムの基本を理解できます。ユーザーに許可を求めるボックスを直接ポップアップ表示しないでください。そうしないと、ユーザーの邪魔になり、新しいコンテンツが失われる可能性があります。ユーザーが高度な機能やシナリオを使用する必要がある場合、この時点でユーザーに承認を求めるため、ユーザーが承認される可能性が大幅に向上します。
    ajax でログインロジックをカプセル化する
    プロセス:

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

    関連する推奨事項:

    WeChat ミニ プログラム開発: 企業がミニ プログラムを開発する必要性

    WeChat ミニ プログラム開発ページのジャンプ方法

    以上がWeChatアプレットの認証ログイン処理の説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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