メインコンテンツへ移動

WeChat オープンプラットフォームとの連携

利用シーン​

WeChat オープンプラットフォーム(open.weixin.qq.com)は、OAuth 2.0 に基づく Web アプリケーションの認可ログインを提供しています。ユーザーは WeChat で認可を行うことで、外部サイトの認証を完了できます。PC では QR コードをスキャンし、モバイルの WeChat 内ブラウザーでは認可確認画面から操作します。この連携により、HAP ユーザーは WeChat 認可でログインできます。

前提条件​

  1. 開発者資格の認証が完了した WeChat オープンプラットフォームのアカウントがあること(企業の営業許可証などの提出が必要です)。
  2. HAP サービスにインターネットからアクセスでき、コールバックドメインの ICP 届出が完了していること(WeChat オープンプラットフォームの要件)。

操作手順​

WeChat オープンプラットフォームで Web アプリケーションを設定する​

  1. WeChat オープンプラットフォームにログインします。

  2. 管理センター > Web アプリケーションに進み、Web アプリケーションを作成をクリックします。

    create-app-entry
  3. アプリケーションの基本情報(名前、概要、公式サイト、アイコンなど)を入力し、次へをクリックします。

    注意

    フォームのサイト情報登録表のスキャン画像は必須です。まず**「WeChat オープンプラットフォーム サイト情報登録表」**のリンクからテンプレートをダウンロードし、印刷して企業の公印を押し、責任者が署名してください。押印・署名済みの書類をスキャンまたは撮影してアップロードします(JPG/PNG/BMP 対応、1ファイル 5MB 以下、最大10枚)。書類がない場合や押印が不鮮明な場合は、審査に通りません。

    app-basic-info
  4. 認可コールバックドメインを入力します。HAP サービスの外部アクセス用ドメインと一致させてください(ドメインのみを入力し、プロトコルとパスは含めません)。

    • 例:HAP のアクセス URL が https://hap.domain.com の場合は、hap.domain.com と入力します。
    • 後で HAP に WeChat ログインを追加した際に生成されるコールバック URLのドメインと一致させてください。
    app-callback-domain
  5. 申請を送信し、WeChat チームによる審査を待ちます。承認後、アプリケーションの詳細画面で AppID と AppSecret を確認できます。

    app-appid-secret

HAP に WeChat 認可ログインを設定する​

  1. プラットフォーム管理者として HAP にログインし、プラットフォーム管理 > セキュリティ > ログイン設定に進みます。

  2. SSO セクションで + サービスをクリックし、WeChat を選択します。

    sso-add-service
  3. ダイアログに次の情報を入力し、保存をクリックします。

    • appid:WeChat オープンプラットフォームの Web アプリケーションの AppID(例:wx9619034219c838xxxx)。
    • appsecret:WeChat オープンプラットフォームの Web アプリケーションの AppSecret。
    • コールバック URL:HAP が https://{HAP域名}/orgsso/weixin/callback の形式で自動生成します。コピーをクリックして控えます。
    weixin-config
  4. コピーしたコールバック URLのドメイン(例:hap.domain.com)を、WeChat オープンプラットフォームの該当 Web アプリケーションの認可コールバックドメインに設定します。作成時に入力済みの場合は、アプリケーションの詳細画面で変更できます。HAP 側と完全に一致させてください。

  5. 保存すると、HAP のログイン画面に WeChat のログインボタンが表示されます。

ユーザーの SSO ログイン​

前提:個人情報で外部アカウントを連携する

WeChat SSO ログインを利用するには、ユーザーがプラットフォームで事前に WeChat アカウントを連携している必要があります。右上のアバター > 個人アカウント > アカウントとプライバシー > 外部アカウントに進み、WeChat を選択して連携をクリックします。

未連携のユーザーは、WeChat の認可に成功してもアカウント連携画面に案内されます。先にアカウント連携を完了すると、以降は WeChat 認可で直接ログインできます。

bind-third-party
  1. HAP のログイン画面を開き、WeChat でログインをクリックします。

    login-entry
  2. WeChat の QR コード認可画面に移動します。WeChat で QR コードをスキャンし、スマートフォンで許可をタップして認可します。

    wechat-authorize
  3. 認可後は自動的に HAP に戻ります。その WeChat アカウントを連携済みのユーザーは、そのままログインできます。未連携の場合はアカウント連携画面に移動し、連携後にログインできます。

  4. ログインに失敗した場合の確認

    • プライベートデプロイ版では、プラットフォーム管理者として HAP にログインし、プラットフォーム管理 > 運用管理 > ログに進み、サービス名が sso のログを検索します。WeChat 側の errcode/errmsg は sso サービスのログに記録されます。

    • 主なエラー(実際に返されたエラーコードに応じて確認してください):

      エラー発生タイミング確認事項
      WeChat 認可画面に redirect_uri 参数错误(redirect_uri パラメーターエラー)が表示されるopen.weixin.qq.com/connect/qrconnect にリダイレクトしたときWeChat オープンプラットフォームの認可コールバックドメインと、HAP が自動生成したコールバック URL(https://{HAP域名}/orgsso/weixin/callback)のドメインが一致していません。両者を完全に一致させてください。オープンプラットフォームにはドメインのみを入力し、プロトコルとパスは含めません
      MissParams認可開始前/コールバック時HAP 側の appid、appsecret、コールバック URL がすべて保存されていないか、WeChat のコールバックに code パラメーターがありません。ログイン設定 > SSO > WeChat で確認し、保存し直してください
      GetUserAccessTokenFaildcode を access_token に交換するときsso ログの body を確認します:
      · errcode 40029 invalid code:認可コードが期限切れ、または使用済みです。再度ログインしてください
      · errcode 40013 invalid appid:入力した appid を確認してください
      · errcode 40125 invalid appsecret:入力した appsecret がリセットされていないか確認してください
      GetUserInfoFaildaccess_token + openid でユーザー情報を取得するときsso ログの body を確認します:
      · errcode 40001 invalid credential:access_token が無効、または期限切れです
      · errcode 40003 invalid openid:openid と token が一致していません
      認可に成功しても、ログインせずアカウント連携画面に移動するコールバック成功後対象の WeChat アカウントが、HAP の個人アカウント > アカウントとプライバシー > 外部アカウントでユーザーに連携されていません。画面の案内に従って連携してください