封装CURL工具包
未上传
实现微信登录
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller {
//获取code根地址
const GET_CODE_URL = 'https://open.weixin.qq.com/connect/qrconnect';
//通过code获取access_token根地址
const GET_ACCESS_TOKEN_URL = 'https://api.weixin.qq.com/sns/oauth2/access_token';
//刷新或续期access_token使用根地址
const REFRESH_ACCESS_TOKEN_URL = 'https://api.weixin.qq.com/sns/oauth2/refresh_token';
//检验授权凭证(access_token)是否有效根地址
const TEST_ACCESS_TOKEN_URL = 'https://api.weixin.qq.com/sns/auth';
//获取用户个人信息(UnionID机制)根地址
const GET_USERINFO_URL = 'https://api.weixin.qq.com/sns/userinfo';
public $urlUtil;
public function __construct(){
parent::__construct();
$this->urlUtil = new UrlUtil;
}
/*
* 微信扫码页面
*/
public function WeChatLogin(){
//结合md5()函数生成一个唯一ID,用于下一步操作,防止csrf攻击
$state = MD5(uniqid());
$_SESSION['state'] = $state;
$paramArr = array(
'appid' => '微信开放平台申请的appid',
'redirect_uri' => urlencode('微信开放平台申请的回调地址'),
'response_type' => 'code',
'scope' => 'snsapi_login',
'state' => $state
);
$loginUrl = $this->urlUtil->combineUrl(self::GET_CODE_URL, $paramArr);
redirect($loginUrl);
}
/*
* 扫码之后首页拦截
*/
public function index() {
$this->getAccessToken();
$this->refreshAccessToken();
$this->testAccessToken();
$this->display();
}
/*
* 通过code获取access_token
*/
public function getAccessToken(){
$code = $_GET['code'];
$paramArr = array(
'appid' => '微信开放平台申请的appid',
'secret' => '微信开放平台申请的AppSecret',
'code' => $code,
'grant_type' => 'authorization_code'
);
$response = $this->urlUtil->get(self::GET_ACCESS_TOKEN_URL, $paramArr);
$arr = json_decode($response,true);
$_SESSION['get']['refresh_token'] = $arr['refresh_token'];
return;
}
/*
* 刷新或续期access_token使用
*/
public function refreshAccessToken(){
$paramArr = array(
'appid' => '微信开放平台申请的appid',
'grant_type' => 'refresh_token',
'refresh_token' => $_SESSION['get']['refresh_token']
);
$response = $this->urlUtil->get(self::REFRESH_ACCESS_TOKEN_URL, $paramArr);
$arr = json_decode($response,true);
$_SESSION['get']['access_token'] = $arr['access_token'];
$_SESSION['get']['openid'] = $arr['openid'];
return;
}
/*
* 检验授权凭证(access_token)是否有效
*/
public function testAccessToken(){
$paramArr = array(
'access_token' => $_SESSION['get']['access_token'],
'openid' => $_SESSION['get']['openid']
);
$response = $this->urlUtil->get(self::TEST_ACCESS_TOKEN_URL, $paramArr);
$arr = json_decode($response,true);
// 成功,进一步获取扫码人信息
if($arr['errcode'] == 0 && $arr['errmsg'] == 'ok'){
// 获取扫码人信息
$response = $this->urlUtil->get(self::GET_USERINFO_URL, $paramArr);
$userarr = json_decode($response,true);
//将扫码人信息存入数据库,需要什么自己决定
$data['unionid'] = $userarr['unionid'];
M('testwxlogin')->add($data);
}
}
}
结合微信开放平台开发文档操作
https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419316518&token=ca300eb6465c015e29bc3d44d6b9a80112a6fd60&lang=zh_CN
QQ群440479799主要是技术交流