ユーザー情報を取得する手順は次のとおりです:
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('get.code');if (empty($code)) { //todo 非微信访问 exit('</code>'); } 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 = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=' . C('wechat.AppID') . '&secret=' . C('wechat.AppSecret');$str = file_get_contents ($url);$str = json _decode($str, true);$access_token = $str['access_token'];</code>
ここで、頻繁な取得を避けるために、access_token を キャッシュすることができます
実装コードは、TP フレームワーク を次のように使用します例:
<code class="hljs php">$access_token = S('access_token');if (empty($access_token)) { $url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=' . C('wechat.AppID') . '&secret=' . C('wechat.AppSecret'); $str = file_get_contents($url); $str = json_decode($str, true); $access_token = $str['access_token']; S('access_token', $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&
=zh_CNaccess_token - 上記で取得したaccess_token
openid - 公開アカウントの一意の識別子
実装コード:
<code class="hljs php">$access_token = S('access_token');if (empty($access_token)) { $url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=' . C('wechat.AppID') . '&secret=' . C('wechat.AppSecret'); $str = file_get_contents($url); $str = json_decode($str, true); $access_token = $str['access_token']; S('access_token', $access_token, 3600);}</code>
上記は、WeChat 公開アカウントがユーザー情報を取得するステップの具体的な方法です。
【関連推奨事項】
1.
WeChatパブリックアカウントプラットフォームのソースコードのダウンロードWeizhichuang T+ WeChatロボットのソースコード以上がWebページ認証によるユーザー情報の取得方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。