ホームページ >WeChat アプレット >WeChatの開発 >Webページ認証によるユーザー情報の取得方法

Webページ認証によるユーザー情報の取得方法

Y2J
Y2Jオリジナル
2017-05-11 13:02:322257ブラウズ

ユーザー情報を取得する手順は次のとおりです:

1 ステップ 1: ユーザーはコードを認証して取得することに同意します
2 ステップ 2: コードを Web ページ認証の access_token に交換します
3 ステップ 3: access_token を更新します (必要な場合) )
4 ステップ 4 : ユーザー情報を取得します (スコープ snsapi_userinfo が必要です)

1 コードを取得します

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

open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type= code&scope=SCOPE&state=STATE#wechat_redirect

「リンクにアクセスできません。」というメッセージが表示された場合は、パラメータが正しく入力されているかどうか、およびスコープ パラメータに対応する承認スコープ権限があるかどうかを確認してください。

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

その中には:

AppID - 公式アカウントの一意の識別子
REDIRECT_URI - ジャンプ URL
SCOPE - 値は snsapi_base (認証ページはポップアップせず、直接ジャンプし、ユーザーのopenidのみを取得します)またはsnsapi_userinfo(認証ページがポップアップします。openidを使用してニックネーム、性別、場所を取得できます。また、フォローしていなくても、ユーザーが認証している限り情報を取得できます) )
STATE - 開発者は a-zA-Z0-9 のパラメータ値をカスタマイズできます

2 Web ページの認可のためのコードを access_token に交換します

ユーザーが認可に同意すると、ページは redirect_uri/ にジャンプします?コード=コード&状態=状態。
stateは上記のSTATEパラメータからそのまま渡されます。

実装コード:

 <code class="hljs php">$code = I(&#39;get.code&#39;);if (empty($code)) {   //todo 非微信访问   exit(&#39;</code>&#39;); }
else
{ //授权后操作 }

ここで、その後のaccess_token取得用のコードを取得できます。

コードを取得したら、次のリンクをリクエストして access_token を取得します:

api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code

appid - の固有の識別子公式アカウント
secret - 秘密鍵
code - 上記で返されるコード
grant_type - 値は authorization_code です

実装コード:

 <code class="hljs bash">$url = &#39;https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=&#39; . C(&#39;wechat.AppID&#39;) . &#39;&secret=&#39; . C(&#39;wechat.AppSecret&#39;);$str = 
file_get_contents
($url);$str = 
json
_decode($str, true);$access_token = $str[&#39;access_token&#39;];</code>

ここで、頻繁な取得を避けるために、access_token を キャッシュすることができます
実装コードは、TP フレームワーク を次のように使用します例:

 <code class="hljs php">$access_token = S(&#39;access_token&#39;);if (empty($access_token)) {  $url = &#39;https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=&#39; . C(&#39;wechat.AppID&#39;) . &#39;&secret=&#39; . C(&#39;wechat.AppSecret&#39;);  $str = file_get_contents($url);  $str = json_decode($str, true);  $access_token = $str[&#39;access_token&#39;];  S(&#39;access_token&#39;, $access_token, 3600);}</code>

access_token を取得すると、openid (ユーザーの一意の識別子) も返されます。WeChat の公式ドキュメントでは、ユーザーが公式アカウントをフォローしていない場合にアクセスすることに注意してください。公式アカウントの Web ページでは、ユーザーと公開アカウントの一意の OpenID も生成されます

openid は WeChat ユーザーを一意に識別します。ユーザーが初めてログインしていない場合は、openid を取得した後にデータベースに クエリ を実行できます。この openid にバインドされているユーザーがいる場合は、後でユーザーを再取得する必要はありません。データベースの user_id 設定 session を直接取得し、直接ログインしてアクセスします

3 3 番目の手順は無視してください。必要に応じて access_token を取得します

4 ユーザー情報を取得します (スコープ snsapi_userinfo が必要です)

データベースにはありません この WeChat ID ユーザーのバインドはユーザーの最初の訪問とログインに相当し、ユーザー情報は 4 回目で取得されますステップ (ユーザー認証の場合、Web ページの認証スコープは snsapi_userinfo であり、開発者はこの時点で access_token と openid を使用してユーザー情報を取得できます)、バックグラウンドでユーザーを作成し、この WeChat ユーザーを (openid 経由で) バインドします


リクエストメソッド


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

lang

=zh_CNaccess_token - 上記で取得したaccess_token

openid - 公開アカウントの一意の識別子



実装コード:

 <code class="hljs php">$access_token = S(&#39;access_token&#39;);if (empty($access_token)) {  $url = &#39;https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=&#39; . C(&#39;wechat.AppID&#39;) . &#39;&secret=&#39; . C(&#39;wechat.AppSecret&#39;);  $str = file_get_contents($url);  $str = json_decode($str, true);  $access_token = $str[&#39;access_token&#39;];  S(&#39;access_token&#39;, $access_token, 3600);}</code>

上記は、WeChat 公開アカウントがユーザー情報を取得するステップの具体的な方法です。

【関連推奨事項】

1.

WeChatパブリックアカウントプラットフォームのソースコードのダウンロード

2.

Weizhichuang T+ WeChatロボットのソースコード

以上がWebページ認証によるユーザー情報の取得方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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