WeChat Web ページの認証


WeChat Webページの認証

1475981980514516.png

ユーザーが WeChat クライアントでサードパーティの Web ページにアクセスすると、公式アカウントは WeChat Web ページの承認メカニズムを通じてユーザーの基本情報を取得し、ビジネス ロジックを実装できます。

Webページ認証コールバックドメイン名に関する手順

1. WeChat公式アカウントがユーザーのWebページ認証をリクエストする前に、開発者は「開発-インターフェース権限-Webページサービス-Webページアカウント-Webページ認証の取得」に進む必要があります。パブリックプラットフォームの公式Webサイトの「基本ユーザー情報」の構成オプションで、認可コールバックドメイン名を変更します。ここには URL ではなくドメイン名 (文字列) が入力されるため、http:// などのプロトコル ヘッダーを追加しないでください。2 認証コールバック ドメイン名の構成仕様は完全なドメインです。 Web ページの認証が必要なドメイン名など、www.qq.com になります。設定後のページは http://www.qq.com/music.html および http://www.qq.com です。このドメイン名の /login.html は OAuth2.0 で認証できます。ただし、http://pay.qq.com、http://music.qq.com、http://qq.com は OAuth2.0 認証を実行できません

3. 公式アカウントのログインが第三者に許可されている場合開発者が管理するには、何も設定する必要はなく、公式アカウントをサードパーティに置き換えて Web ページの認証を実装させるだけです

Webページ認可の2つのスコープの違いの説明

1. snsapi_baseをスコープとして開始されたWebページ認可は、ページに入るユーザーのopenidを取得するために使用され、サイレントに認可され、自動的にジャンプします。コールバック ページに移動します。ユーザーは、コールバック ページ (多くの場合、ビジネス ページ) に直接アクセスすると認識します。

2. スコープとして snsapi_userinfo で開始される Web ページの承認は、ユーザーの基本情報を取得するために使用されます。ただし、この種の認可はユーザーが手動で同意する必要があり、ユーザーは同意しているため特に注意する必要はなく、認可後にユーザーの基本情報を取得できます。

3. ユーザー管理インターフェースの「ユーザー基本情報取得インターフェース」は、ユーザーが公式アカウントと対話するか、メッセージに従ってイベントをプッシュした場合にのみ、ユーザーのOpenIDに基づいてユーザーの基本情報を取得できます。他の WeChat インターフェイスを含むこのインターフェイスでは、正常に呼び出す前にユーザー (つまり、openid) が公式アカウントをフォローする必要があります。

Webページ認証access_tokenと通常のaccess_tokenの違いについて

1. WeChat Webページ認証は、ユーザーが公式アカウントを認証した後、Webページ用の固有のインターフェース呼び出しを取得できます。認証情報 (Web ページ認証 access_token)、Web ページ認証 access_token を通じて、基本的なユーザー情報の取得など、認証後のインターフェイス呼び出しを行うことができます。

2. 他の WeChat インターフェースの場合は、基本サポートの「Get access_token」インターフェースを通じて通常の access_token 呼び出しを取得する必要があります。

UnionID メカニズムについて

1. 基本的なユーザー情報を取得するための Web ページの承認も UnionID メカニズムに従っていることに注意してください。つまり、開発者が複数の公式アカウント間、または公式アカウントとモバイル アプリケーション間でユーザー アカウントを統合する必要がある場合、事前に WeChat オープン プラットフォーム (open.weixin.qq.com) にアクセスして公式アカウントをバインドする必要があります。上記のニーズを満たすために UnionID メカニズムを使用します。

2. UnionID メカニズムの役割の説明: 開発者が複数のモバイル アプリケーション、Web サイト アプリケーション、パブリック アカウントを持っている場合、同じユーザーであるため、ユーザーの基本情報から UnionID を取得することでユーザーの一意性を区別できます。同じ WeChat に対してオープンである プラットフォーム上の異なるアプリケーション (モバイル アプリケーション、Web サイト アプリケーション、およびパブリック アカウント) は同じ UnionID を持ちます。

特別なシナリオでのサイレント認証について

1. スコープとして snsapi_base を使用した Web ページの認証は、サイレントに認証され、ユーザーは気づかれません

2. account の場合、ユーザーが公式アカウントのセッションまたはカスタム メニューから公式アカウントの Web 認証ページに入ると、スコープが snsapi_userinfo であっても、認証はサイレントで行われ、ユーザーは認識しません。

具体的には、Web ページの認証プロセスは 4 つのステップに分かれています:

1. ユーザーを認証ページに誘導して認証に同意し、コードを取得します

2. コードを Web ページ認証の access_token (access_token とは異なります) に交換します。基本サポートでは)

3. 必要に応じて、開発者は Web ページ認証 access_token を更新して有効期限を回避できます

4. Web ページ認証 access_token および openid を通じてユーザーの基本情報を取得します (UnionID メカニズムをサポートします)


ステップ 1 : ユーザーは、コードを認可して取得することに同意します

WeChat パブリック アカウントが認可スコープ (スコープ パラメーター) の権限を持っていることを確認するという前提の下で (サービス アカウントが高度なインターフェイスを取得した後、サービス アカウントは、デフォルトではスコープパラメータ)、フォロワーに次のページを開くようにガイドします:

https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect 「リンクにアクセスできません」というメッセージが表示される場合は、パラメーターが次のとおりであるかどうかを確認してください。スコープパラメータに対応する認可スコープ権限を持っていること。

特記事項: 承認操作のセキュリティレベルが高いため、承認リクエストを開始する際、WeChat は承認リンクに対して定期的に強力な一致チェックを実行します。リンクのパラメーターの順序が間違っている場合、認証ページは通常アクセスできなくなります

参考リンク (このリンクを WeChat クライアントで開いて体験してください) スコープは snsapi_base https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx520c15f417810387&redirect_uri=https %3A%2F%2Fchong.qq .com%2Fphp%2Findex.php%3Fd%3D%26c%3DwxAdap

ter%26m%3DmobileDeal%26showwxpaytitle%3D1%26vb2ctag%3D4_2030_5_1194_60&response_type=code&scope=snsapi_bas

e&state=123# wechat_redirectスコープは snsapi_userinfo https://open .weixin.qq.com/connect/oauth2/authorize?appid=wxf0e81c3bee622d60&redirect_uri=http%3A%2F%2Fnba.bluewebgame.com%2Fauth_response.php&response_type=

code&scope=snsapi_userinfo&state=STATE#wecha t_リダイレクト

特別な注意: ジャンプ コールバック redirect_uri は、認証コードのセキュリティを確保するために https リンクを使用する必要があります。

パラメータの説明

パラメータは必須ですか? 説明
appid公式アカウントの一意の識別子です
redirect_uriはコールバックリンクリダイレクトです認証後のアドレスを入力してくださいurlencode ペアを使用します リンクは処理されます
response_type 戻り値の型です。コードを入力してください
スコープ アプリケーション認証スコープ、snsapi_base (認証ページはポップアップしません、直接ジャンプします。ユーザーの openid のみが取得できます)、snsapi_userinfo (認証ページがポップアップし、openid を通じてニックネーム、性別、場所を取得できます。また、ユーザーが注意していなくても、ユーザーが許可していれば情報を取得できます)
stateいいえstateパラメータはリダイレクト後に含まれ、開発者が記入することができますa-zA-Z0 パラメーター値 -9、最大 128 バイト
#wechat_redirect直接開かれるか、ページ 302 リダイレクトを行うときに、このパラメーターを保持する必要があります

下の図は、スコープが snsapi_userinfo と等しい場合の認可ページを示しています。

ユーザーが認可に同意した後

ユーザーが認可に同意すると、ページは redirect_uri/?code にジャンプします。 =コード&状態=状態。

コードの説明: コードは、access_token と引き換えにチケットとして使用されます。各ユーザー認証で使用されるコードは異なります。コードは 1 回のみ使用でき、5 分間使用されないと自動的に期限切れになります。

ステップ 2: コードを通じてウェブページの認可 access_token を交換する

まず第一に、ここでコードを通じて交換されるのは特別なウェブページの認可 access_token であり、基本サポートの access_token とは異なることに注意してください (この access_token が使用されます)他のインターフェイスを呼び出すため)。公式アカウントは、以下のインターフェースを通じて Web ページの認可 access_token を取得できます。 Web ページ認可のスコープが snsapi_base の場合、このステップでは Web ページ認可の access_token を取得すると同時に、openid も取得し、ここで snsapi_base 形式の Web ページ認可プロセスが終了します。

特別な注意: 公式アカウントのシークレットと取得された access_token は非常に高いセキュリティ レベルを持つため、サーバー上にのみ保存する必要があり、クライアントに渡すことは許可されません。 access_token の更新や access_token を介したユーザー情報の取得などの後続のステップもサーバーから開始する必要があります。

リクエスト方法

コードを取得したら、次のリンクをリクエストして access_token を取得します: https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code

パラメータの説明

パラメータは必須ですか? 説明
appid公式アカウントの一意の識別子です
secretはい 公式のアプリの秘密account
codeYes最初のステップで取得したcodeパラメータを入力します
grant_typeYesauthorization_codeを入力します

返却手順

正しい場合に返される JSON データ パケットは次のとおりです:

{ "access_token":"ACCESS_TOKEN",

"expires_in":7200,

"refresh_token":"REFRESH_TOKEN",

"openid ": "OPENID",

"scope":"SCOPE" }

parameterdescriptionWebPage Authorizationインターフェイス呼び出しバウチャー、注:このAccess_Tokenは、basicsのAccess_tokenとは異なり、バウチャータイムアウト、ユニット( )ユーザーリフレッシュ access_token ユーザーが公式アカウントをフォローしていない場合、ユーザーが公式アカウントのWebページにアクセスすると、ユーザーに固有のOpenIDが付与されることに注意してください。ユーザーと公式アカウントも生成されます ユーザーが許可したスコープをカンマ(,)で区切って指定します
Access_token
refresh_token
openid
スコープ

エラーが発生すると、WeChat は次のように JSON データ パケットを返します (例はコード無効エラーです):

{"errcode":40029,"errmsg":"invalid code"}

ステップ 3: access_token を更新する (必要な場合)

access_token の有効期間が短いため、access_token がタイムアウトした場合、refresh_token を使用して更新できます。認可する。

リクエストメソッド

2番目のステップでrefresh_tokenを取得した後、次のリンクをリクエストしてaccess_tokenを取得します:

https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=APPID&grant_type =refresh_token&refresh_token=REFRESH_TOKEN


refresh_token を入力します refresh_tokenは access_tokenを通じて取得したrefresh_tokenパラメータを入力します
パラメータは必須ですか? 説明
appidは、公式アカウント
grant_typeの固有の識別子です
🎜

返送手順

正しい場合に返される JSON データ パケットは次のとおりです:

{ "access_token":"ACCESS_TOKEN",

"expires_in":7200,

"refresh_token":"REFRESH_TOKEN",

"open id": "OPENID",

"scope":"スコープ" }

parameterdescriptionWebPage Authorizationインターフェイス呼び出しバウチャー、注:このAccess_Tokenは、basicsのAccess_tokenとは異なり、バウチャータイムアウト、ユニット(秒) )ユーザーリフレッシュ access_tokenユーザー固有の識別子ユーザーが許可するスコープ、カンマ(,)を使用して
Access_token
refresh_token
openid
スコープ
を区切ります

エラーが発生すると、WeChat は次のように JSON データ パケットを返します (例は無効なコード エラーです):

{"errcode":40029,"errmsg":"invalid code"}

ステップ 4: ユーザー情報を取得する (スコープは snsapi_userinfo である必要があります)

Web ページの認証スコープが snsapi_userinfo の場合、開発者は access_token と openid を通じてユーザー情報を取得できるようになります。

リクエスト方法

http: GET (httpsプロトコルを使用してください) https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN

パラメータの説明

パラメータ説明
access_tokenWebページ認証インターフェース呼び出し証明書、注意: このaccess_tokenは、サポートされている基本的なaccess_tokenとは異なります
openidユーザー
lang国と地域の言語バージョンに戻る、zh_CN 簡体字、zh_TW 繁体字、en 英語

返送手順

正しい場合に返される JSON データ パケットは次のとおりです:

{ "openid":" OPENID",

"nickname": NICKNAME,

"sex":"1",

"province ": "州"

"都市":"市",

"国":"国",

"headimgurl": "http://wx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSY VY0ChQKkia JSgQ1dZuTOgvLLrhJbERQQ

4eMsv84eavHiaiceqxibXXSCfHe/ 46"、

"privilege":[ "PRIVILEGE1" "PRIVILEGE2" ]、

"unionid": "o6_bmasdasdsad6_2sgVt7hMZOPfL"

}

headimgurlユーザーアバター、最後の値は正方形のアバターのサイズを表します(0、46、64、96、132の値が利用可能で、0は640を表します) *640 正方形のアバター)、ユーザーがアバターを持っていない場合、この項目は空です。ユーザーがアバターを変更すると、元のアバター URL は無効になります。
パラメータ説明
openidユーザーの一意の識別子
ニックネームユーザーのニックネーム
性別値が 1 の場合、男性です。値は2です。値が0の場合は不明です
provinceユーザープロフィールに記入された都道府県
city通常のユーザープロフィールに記入された都市
country 中国などの国はCNです
privilegeWeChat Woka user is (chinaunicom)
unionidなどのユーザー権限情報、json配列。このフィールドは、ユーザーが公式アカウントをWeChatオープンプラットフォームアカウントにバインドした後にのみ表示されます。

エラーが発生した場合、WeChat は次のように JSON データ パケットを返します (例は無効な openid):

{"errcode":40003,"errmsg":"無効な openid "}

添付ファイル: 認可資格情報(access_token)の検証 有効ですか

リクエストメソッド

http: GET (httpsプロトコルを使用してください) https://api.weixin.qq.com/sns/auth?access_token=ACCESS_TOKEN&openid=OPENID

parameterdescription

Parameter 戻り命令正しいJSON戻り結果: { "errcode":0,"errmsg":"ok"}
エラーが発生した場合のJSON戻り例: { "errcode":40003 ,"errmsg ":"openid が無効です"}