微信登录 php教程,php-微信授权登录

原生php 微信授权登录:

index.php页面:

session_start();

if($_SESSION['openid']){

exit('已经授权登录过了。。。');

} {

include_once "weixin.class.php";

$wx_login = new Wxlogin();

echo '1';exit;

$userinfo = $wx_login->getUserInfo();

if($userinfo['openid']){

$_SESSION['openid'] = $userinfo['openid'];

var_dump($userinfo);

} else {

exit('授权失败');

}

}

weixin.class.php 页面:

class Wxlogin{

//private $login_page_url = "https://open.weixin.qq.com/connect/qrconnect?";//微信登录界面

private $login_page_url = "https://open.weixin.qq.com/connect/oauth2/authorize?";//微信登录界面

private $get_accessToken_url = "https://api.weixin.qq.com/sns/oauth2/access_token?";//后去token的url

//private $get_openId_url = 'https://graph.qq.com/oauth2.0/me';//获取openid的url

private $get_user_info = "https://api.weixin.qq.com/sns/userinfo?";//获取用户信息的url

private $app_id = 'wxefb884843af5be20';

private $app_key = 'fcf28113f7b223622544459a25c56daa'; //app_secret

public $redirect_url = 'www.demo2.php';

private $access_token;

//QQ登录页面

private function get_wx_login_page()

{

$state = md5(rand(1,1000));

$query = [

'appid' => $this->app_id,

'redirect_uri' => $this->redirect_url,

'response_type' => 'code',

'scope' => 'snsapi_userinfo',

'state' => $state,

];

$_SESSION['state'] = $state;//保存state验证

$url= $this->login_page_url.http_build_query($query).'#wechat_redirect';

header("Location:$url");

exit;

}

//获取access_token

private function get_code()

{

//获取code

@$code = $_GET['code'];

if(!$code){

$this->get_wx_login_page();

}

$state = $_GET['state'];

/*

if($state != $_SESSION['state']){

echo "state is wrong!";

exit;

}

*/

$_SESSION['state'] = null;

$query = [

'grant_type' => 'authorization_code',

'code' => $code,

'secret' => $this->app_key,

'appid' => $this->app_id,

];

return $this->get_curl($this->get_accessToken_url, http_build_query($query));

}

//获取token

private function get_token_info()

{

//获取access_token

/* {

"access_token":"ACCESS_TOKEN",

"expires_in":7200,

"refresh_token":"REFRESH_TOKEN",

"openid":"OPENID",

"scope":"SCOPE"

} */

$data = json_decode($this->get_code(),true);

//参数组装数组

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

$array = array(

'access_token' => $data["access_token"],

'openid' => $data['openid'],

);

return $this->get_curl($this->get_user_info, http_build_query($array));

}

//获取openid&&获取用户信息

public function getUserInfo()

{

$data = $this->get_token_info();

$data = json_decode($data, true);

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

return $data;

}

//curl GET请求

private function get_curl($url,$query)

{

$url_request = $url.$query;

$curl = curl_init();

//设置抓取的url

curl_setopt($curl, CURLOPT_URL, $url_request);

//设置头文件的信息作为数据流输出

curl_setopt($curl, CURLOPT_HEADER, 0);

//设置获取的信息以文件流的形式返回,而不是直接输出.

curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

//执行命令

$data = curl_exec($curl);

//关闭URL请求

curl_close($curl);

return $data;

}

}

来源:https://www.cnblogs.com/1320lz/p/9708241.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值