多くの開発者は、WeChat 公式アカウントを開発するときにユーザーのアバターを取得する必要があります。それが個人の WeChat アカウントの場合、WeChat 公式アカウントのすべてのインターフェース権限を取得するために「パブリック プラットフォーム テスト アカウント」を申請する必要があります。
まず WeChat から送信された access_token を取得し、次に openid と access_token を使用して WeChat サーバーから送信されたユーザー メッセージを json 形式で取得します。 最後に、josn_decode を使用してそれを変換し、ユーザーの詳細メッセージを取得します。コードを記述する前にそれを実行してください。 インターフェイスの操作は次のとおりです。
まず、下の図に示すように、WeChat パブリック プラットフォームに入ります。
開発者ツールをクリックし、次にオンライン インターフェイス デバッグをクリックします。下の図に示すように、インターフェイス選択インターフェイスに入ります
クリックして下のページに入り、インターフェイスタイプで選択します: ユーザー管理、インターフェイスリストで選択します: ユーザーアカウント情報の取得インターフェイス/ユーザー/情報。
次に、WeChat 開発ドキュメントを確認して、access_token を取得し、appid を使用します。そして、appsecret は以下のとおりです
クリックして appsecret を有効にして取得し、ブラウザの URL に入力します:
https ://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$appid&secret =$appsecret" URL。$appid は上の図の appid 文字列、$appsecret は開発者パスワードです。 2 つの変数を文字列に置き換えて (引用符が削除されていることに注意してください)、Enter キーをクリックして、WeChat サーバーから送信されたメッセージを取得します。 access_token およびexpires_in データについては、取得した access_token 文字列をインターフェイス デバッグ ページにコピーします。プラットフォームをフォローした後のテストアカウントのIDは暗号化されています。取得方法については、前の記事を参照するか、Baiduでも使用できます(緑色の確認が表示されます)。入力が完了したら)、クリックして問題を検出します。
取得される情報は次のとおりです。
これで、access_token を取得するコードを追加してみましょう。個人情報;
public function getaccss_token(){ $table = 'Access_token'; $useraccess_token = Db::table('Access_token')->select(); $appid = "你的appid"; $appsecret = "你的appsecret"; $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$appid&secret=$appsecret"; //判断是不是第一次获取access_token if(!count($useraccess_token)){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $output = curl_exec($ch); curl_close($ch); $jsoninfo = json_decode($output, true); $access_token = $jsoninfo["access_token"]; $data=['access_token'=>$access_token,'expires_time'=>($jsoninfo['expires_in']+time()-200)]; Db::table($table)->insert($data); return $access_token; }else if($useraccess_token[0]['expires_time']<time()){//判断是否过期 $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $output = curl_exec($ch); curl_close($ch); $jsoninfo = json_decode($output, true);//转换格式 $access_token = $jsoninfo["access_token"]; $data=['access_token'=>$access_token,'expires_time'=>($jsoninfo['expires_in']+time()-200)]; Db::table($table)->where('expires_time',$useraccess_token[0]['expires_time'])->update($data);//更新数据库; return $access_token; }else{ $access_token = $useraccess_token[0]['access_token']; return $access_token; } }
取得した access_token は 7200 秒間 (2 時間) のみ有効なので、ユーザーが公式にエントリするたびに実行する必要があります。アカウントの有効期限が切れているかどうかを確認する必要があります。有効期限が切れている場合は、上の図のいくつかの if 判定を使用してデータベースに保存します。もちろん、キャッシュから呼び出したり、ファイルに入れてファイルから呼び出すこともできます。access_token を取得した後、access_token と openid を使用して取得できます。以下に示すように、ユーザーの個人情報を取得します。
public function userinfo($openid){ $access_token = $this->getaccss_token(); //获取用户信息地址 $urlid = 'https://api.weixin.qq.com/cgi-bin/user/info?access_token='.$access_token.'&openid='.$openid.'&lang=zh_CN'; $curl = curl_init(); // 启动一个CURL会话 curl_setopt($curl, CURLOPT_URL, $urlid); curl_setopt($curl, CURLOPT_HEADER, 0); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); // 跳过证书检查 //curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, true); // 从证书中检查SSL加密算法是否存在 $tmpInfo = curl_exec($curl); //返回api的json对象 //关闭URL请求 curl_close($curl); $userinfo = json_decode($tmpInfo,true); return $userinfo; }
同じです。curl 関数関連の操作を通じて情報を取得し、形式を変換します。 最後の userinfo は、ユーザーの個人情報の配列です。
上記は、それを呼び出すだけです。 access_token~! を通じてユーザーの個人情報を取得する操作
関連する推奨事項:
php WeChat パブリック アカウントの開発、ユーザー アバターの取得、ダウンロード以上がユーザーのWeChat個人情報を取得するためのphp WeChatパブリックアカウントの開発の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。