PHP实现微信开放平台扫码登录(源码)

xjp 2018-02-09

1、首先到微信官网开放平台申请获取到appid和APPSECRET,前台显示页面如下:

<!DOCTYPEhtml>

<html>

<head>

<metahttp-equiv="content-type"content="text/html;charset=utf-8">

</head>

<body>

<spanid="login_container"></span>

<scriptsrc="http://res.wx.qq.com/connect/zh_CN/htmledition/js/wxLogin.js"></script>

<script>

varobj=newWxLogin({

id:"login_container",

appid:"wxed782be999f86e0e",

scope:"snsapi_login",

redirect_uri:encodeURIComponent("http://"+window.location.host+"/login.php"),

state:Math.ceil(Math.random()*1000),

style:"black",

href:""});

</script>

</body>

</html>

PHP实现微信开放平台扫码登录(源码)

2、PHP处理代码页面

/*

require_once('weixin.class.php');

$weixin=newclass_weixin();

*/

define('APPID',"wx19ba77624e083e08");

define('APPSECRET',"c1a56a5c4247dd44c320c9719c5ceb90");

classclass_weixin

{

var$appid=APPID;

var$appsecret=APPSECRET;

//构造函数,获取AccessToken

publicfunction__construct($appid=NULL,$appsecret=NULL)

{

if($appid&&$appsecret){

$this->appid=$appid;

$this->appsecret=$appsecret;

}

//扫码登录不需要该AccessToken,语义理解需要

//1.本地写入

$res=file_get_contents('access_token.json');

$result=json_decode($res,true);

$this->expires_time=$result["expires_time"];

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

if(time()>($this->expires_time+3600)){

$url="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$this->appid."&secret=".$this->appsecret;

$res=$this->http_request($url);

$result=json_decode($res,true);

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

$this->expires_time=time();

file_put_contents('access_token.json','{"access_token":"'.$this->access_token.'","expires_time":'.$this->expires_time.'}');

}

}

/*

*PART1网站应用

*/

/*

header("Content-type:text/html;charset=utf-8");

require_once('wxopen.class.php');

$weixin=newclass_weixin();

if(!isset($_GET["code"])){

$redirect_url='http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];

$jumpurl=$weixin->qrconnect($redirect_url,"snsapi_login","123");

Header("Location:$jumpurl");

}else{

$oauth2_info=$weixin->oauth2_access_token($_GET["code"]);

$userinfo=$weixin->oauth2_get_user_info($oauth2_info['access_token'],$oauth2_info['openid']);

var_dump($userinfo);

}

*/

//生成扫码登录的URL

publicfunctionqrconnect($redirect_url,$scope,$state=NULL)

{

$url="https://open.weixin.qq.com/connect/qrconnect?appid=".$this->appid."&redirect_uri=".urlencode($redirect_url)."&response_type=code&scope=".$scope."&state=".$state."#wechat_redirect";

return$url;

}

//生成OAuth2的AccessToken

publicfunctionoauth2_access_token($code)

{

$url="https://api.weixin.qq.com/sns/oauth2/access_token?appid=".$this->appid."&secret=".$this->appsecret."&code=".$code."&grant_type=authorization_code";

$res=$this->http_request($url);

returnjson_decode($res,true);

}

//获取用户基本信息(OAuth2授权的AccessToken获取未关注用户,AccessToken为临时获取)

publicfunctionoauth2_get_user_info($access_token,$openid)

{

$url="https://api.weixin.qq.com/sns/userinfo?access_token=".$access_token."&openid=".$openid."&lang=zh_CN";

$res=$this->http_request($url);

returnjson_decode($res,true);

}

相关推荐