在wxshop項目Application應用目錄下新增Wechat目錄,隨後新增Controller、Lib和View等基礎目錄,並加載微信網頁授權類文件、JS-SDK操作類文件和適配OneThink框架的微信支付類庫wxpay。
在Controller控制器目錄中新增WechatController.class.php父控制器文件、IndexController.class.php首頁控制器文件和AuthController.class.php微信網頁授權用戶註冊控制器文件。其中,在WechatController.class.php類文件新增checkUserWxLogin()方法,方便對是否已經網頁授權登錄進行判斷,代碼如下:
另外,在類初始化方法中根據OpenID進行數據的檢索,代碼如下:
AuthController.class.php文件中getUserInfo()方法的核心授權註冊邏輯如下:
public function getUserInfo()
{
header('Content-type:text/html;charset=utf-8');
// 第一步:獲取微信回調的code值
$code = I('code');
if($code)
{
import("@.Lib.Wx.WxAuth");
$wx = new \WxAuth(APP_ID ,APP_SECRET);
// 第二步:根據code獲取access_token;
$this->access_data = $wx->getAccessTokenByCode($code);
// 第三步:拉取用戶信息
$this->userinfo = $wx->getUserInfoByOpenID();
// 第四步:緩存openid到session中去
$this->cacheOpenID();
// 第五步:新增/更新用戶信息
if($this->saveUserInfo())
{
// 第六步:頁面重定向到指定地址
redirect(U('Index/index'));
}
}
else
{
$this->error('獲取Code失敗!,請稍後再試!');
}
}
在IndexController.class.php控制器文件中新增index()首頁數據處理方法,實現代碼如下: