1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > php的微信登录示例代码 网站微信登录实例代码

php的微信登录示例代码 网站微信登录实例代码

时间:2019-02-21 05:17:16

相关推荐

php的微信登录示例代码 网站微信登录实例代码

//处理并返回微信用户信息类

class wx{

//配置APP参数

private $appid = '';

private $secret = '';

private $re_url = '';

private $state = 'state';

private $access_token = '';

private $openid = '';

public function __construct()

{

}

public function get_code()

{

$this->get_state();

$url = 'https://open./connect/qrconnect?appid='.$this->appid.'&redirect_uri='.urlencode($this->re_url).'&response_type=code&scope=snsapi_login&state='.$_SESSION[$this->state].'#wechat_redirect';

header('Location: '.$url);

}

public function get_info($code,$state){

$this->get_access_token($code,$state);

$userinfo = $this->get_user_info();

return $userinfo;

}

/**

* [get_access_token 获取access_token]

* @param [string] $code [登陆后返回的$_GET['code']]

* @return [array] [expires_in 为有效时间 , access_token 为授权码 ; 失败返回 error , error_description ]

*/

public function get_access_token($code,$state)

{

//$this->is_state($state);

//获取access_token

$token_url = 'https://api./sns/oauth2/access_token?appid='.$this->appid.'&secret='.$this->secret.'&code='.$code.'&grant_type=authorization_code';

$result = json_decode($this->_curl_get_content($token_url),true);

$this->access_token = $result['access_token'];

$this->openid = $result['openid'];

}

/**

* [get_user_info 获取用户信息]

* @param [string] $token [授权码]

* @param [string] $openid [用户唯一ID]

* @return [array] [ret:返回码,为0时成功。msg为错误信息,正确返回时为空。...params]

*/

public function get_user_info()

{

$url = 'https://api./sns/userinfo?access_token='.$this->access_token.'&openid='.$this->openid;

$info = json_decode($this->_curl_get_content($url), TRUE);

$info1['name'] = $info['nickname'];

$info1['sex'] = $info['sex'];

$info1['img'] = $info['headimgurl'];

$info1['openid'] = $info['openid'];

$info1['unid'] = $info['unionid'];

return $info1;

}

private function _curl_get_content($url)

{

$ch = curl_init();

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

curl_setopt($ch, CURLOPT_URL, $url);

//设置超时时间为3s

curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, 3);

$result = curl_exec($ch);

curl_close($ch);

return $result;

}

//生成随机参数

private function get_state() {

$str = str_shuffle('qazxswedcvfrtgbnhyujmkiol123456789') . time();

$_SESSION['state'] = md5(md5($str));

}

//判断随机数

private function is_state($state) {

if($state!==$_SESSION[$this->state]){

exit('随机数检验失败,疑似csrf攻击');

}

}

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。