WeChat 公式アカウントやミニ プログラムを開発する場合、WeChat のニックネームを取得する必要があることがよくあります。しかし、PHP を使用しているときに、突然 WeChat ユーザーのニックネームを取得できなくなることがあります。これはなぜですか?この記事では、この問題を調査し、解決策を提供します。
WeChat の公開アカウントやミニ プログラムでは、ユーザーはニックネームを使用して自分自身を表示できますが、同時にこのニックネームはプログラムの重要なパラメーターでもあります。したがって、プログラム内で WeChat ニックネームを取得する必要がある場合は、WeChat が提供する API を通じて呼び出すことができます。
たとえば、WeChat パブリック アカウントでユーザーのニックネームを取得するコードは次のとおりです:
// 通过微信 API 获取用户信息 $userInfo = $app->oauth->user()->getOriginal(); // 获取用户昵称 $nickname = $userInfo['nickname'];
ただし、このメソッドを使用して WeChat ニックネームを取得すると、次のような問題が発生することがあります。返されたニックネームが空であるため、このニックネームでの運用を継続できなくなります。
では、なぜこの問題が発生するのでしょうか?これは、WeChat API がユーザー情報を返す際にニックネームを URL エンコードするため、デコードしないと意味のない文字列が得られてしまうためです。
たとえば、WeChat ニックネームが「PHP Master」であると仮定すると、WeChat API を通じてユーザー情報を取得した後、返されるデータは次のようになります。
{ "openid": "xxxx", "nickname": "%50%48%50%3c%73%74%72%6f%6e%67%3e", "sex": 1, "language": "zh_CN", "city": "", "province": "", "country": "", "headimgurl": "", "privilege": [] }
返されるデータは次のとおりです。ニックネームは URL エンコードされた文字列に変換されます。この文字列をデコードしないと、実際のニックネームを取得できません。
この問題の解決策は非常に簡単で、ニックネームを取得した後に URL デコードするだけです。 PHP では、urldecode
関数を使用してこれを行うことができます。
サンプル コードは次のとおりです。
// 通过微信 API 获取用户信息 $userInfo = $app->oauth->user()->getOriginal(); // 获取用户昵称并进行 URL 解码 $nickname = urldecode($userInfo['nickname']);
このようにして、正しい WeChat ニックネームを取得できます。
WeChat 公開アカウントまたはミニ プログラムを開発する場合、ユーザー情報の取得は非常に重要な操作です。ただし、WeChat APIではニックネームがURLエンコードされているため、ニックネームを取得できない場合があります。この記事で紹介した解決策を使用すると、URL エンコードされたニックネームをデコードして正しいニックネームを取得できるため、プログラムが正常に動作することが保証されます。
以上がPHP で WeChat ニックネームを取得できない問題について話し合うの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。