最近WeChatインターフェースの開発に取り組んでいるので、WeChatでのログインを認証してユーザー情報を取得するこのインターフェースの開発プロセスをまとめます。
1. まず、WeChat 公式アカウントは、対応する AppID と AppSecret を取得する必要があります。WeChat ログインを申請し、審査に合格した場合にのみ、アクセス プロセスを開始できます。
2. 認証プロセス
1. プロセスの説明
(1). WeChat ユーザーがサードパーティ アプリケーションの認証を許可すると、WeChat はアプリケーションを起動するか、次の URL にリダイレクトします。サードパーティの Web サイトに認証一時チケット コード パラメーターを追加し、API を通じて access_token を交換します。 access_token を通じてユーザーの基本的なデータ リソースを取得したり、ユーザーが基本的な操作を実行できるように支援します。
2. access_token シーケンス図を取得します:
3. 開発 (私は CI フレームワークを使用します。実際には、どのフレームワークでも同じです。MVC モードでも可能です) 1. CODE をリクエストします
weixin.php
<?php class weixinController extends CI_Controller { public $userInfo; public $wxId; public function __construct(){ parent::__construct(); //只要用户一访问此模块,就登录授权,获取用户信息 $this->userInfo = $this->getWxUserInfo(); } /** * 确保当前用户是在微信中打开,并且获取用户信息 * * @param string $url 获取到微信授权临时票据(code)回调页面的URL */ private function getWxUserInfo($url = '') { //微信标记(自己创建的) $wxSign = $this->input->cookie('wxSign'); //先看看本地cookie里是否存在微信唯一标记, //假如存在,可以通过$wxSign到redis里取出微信个人信息(因为在第一次取到微信个人信息,我会将其保存一份到redis服务器里缓存着) if (!empty($wxSign)) { //如果存在,则从Redis里取出缓存了的数据 $userInfo = $this->model->redisCache->getData("weixin:sign_{$wxSign}"); if (!empty($userInfo)) { //获取用户的openid $this->wxId = $userInfo['openid']; //将其存在cookie里 $this->input->set_cookie('wxId', $this->wxId, 60*60*24*7); return $userInfo; } } //获取授权临时票据(code) $code = $_GET['code']; if (empty($code)) { if (empty($url)) { $url = rtirm($_SERVER['QUERY_STRING'], '/'); //到WxModel.php里获取到微信授权请求URL,然后redirect请求url redirect($this->model->wx->getOAuthUrl(baseUrl($url))); } } } } ?>
codeのControllerコードを取得
Wxmodel.php<?php class WxModel extends ModelBase{ public $appId; public $appSecret; public $token; public function __construct() { parent::__construct(); //审核通过的移动应用所给的AppID和AppSecret $this->appId = 'wx0000000000000000'; $this->appSecret = '00000000000000000000000000000'; $this->token = '00000000'; } /** * 获取微信授权url * @param string 授权后跳转的URL * @param bool 是否只获取openid,true时,不会弹出授权页面,但只能获取用户的openid,而false时,弹出授权页面,可以通过openid获取用户信息 * */ public function getOAuthUrl($redirectUrl, $openIdOnly, $state = '') { $redirectUrl = urlencode($redirectUrl); $scope = $openIdOnly ? 'snsapi_base' : 'snsapi_userinfo'; $oAuthUrl = "https://open.weixin.qq.com/connect/oauth2/authorize?appid={$this->appId}&redirect_uri={$redirectUrl}&response_type=code&scope=$scope&state=$state"; return $oAuthUrl; } 获取code的Model代码
codeのModelコードを取得
リクエストパラメータの説明と戻り値の説明を添付します リクエストパラメータの説明:
レスポンス戻り値説明:
リクエストが成功するとリクエストパラメータのredirect_uriの値にリダイレクトされ、実際には$this->userInfo =に戻ります。 weixin.php の $this-> getWxUserInfo(); 行に移動し、再度 getWxUserInfo() メソッドを入力します。このとき、
行でもコードの値を取得できます。 。次に、2 番目のステップに進みます。
2。
リクエストパラメータの説明:
レスポンス戻り値の説明:エラーが返された場合は次のようになります:
3. インターフェースを呼び出します(ユーザー情報を取得します) ) access_token を介して取得 access_token の後、次の前提条件がインターフェース呼び出しに適用されます:
(1) access_tokec が有効でタイムアウトになっていない (2) WeChat ユーザーがサードパーティの対応するインターフェース スコープ (スコープ) を承認している。アプリケーションアカウント。 ユーザー情報を取得するためのコードは、ユーザー情報を取得するためのweixin.phprreee
controllerwxmodel.phprreee
modelユーザー情報を取得する
//获取授权临时票据(code) $code = $_GET['code'];
ユーザー情報を取得するカスタム関数
上記の3ステップでインターフェースを呼び出すことで、ユーザーのWeChatアカウント情報を取得できます。
コードの多くの箇所にコメントを付けているので、よく見てください。学びたいと思っているお友達はぜひじっくりと見てみてください。WeChat の認証ログインとユーザー情報インターフェイスへのアクセスに関連するその他の記事については、PHP 中国語 Web サイトに注目してください。