小程序微信授权登录php_微信小程序用户授权【原生PHP实现】

[PHP] 纯文本查看 复制代码<?php

session_start();

include 'function.php';

/**

* 小程序登陆验证

* [url=home.php?mod=space&uid=952169]@Param[/url] $code

*/

if($_GET){

$code = $_GET['code'];

function getOpenid($code){

//配置appid

$appid = "wx9e1f021c48d719bd";

//配置appscret

$secret = "acbd031b5e53f1819d97cd00be77dc89";

//api接口

$api = "https://api.weixin.qq.com/sns/jscode2session?appid={$appid}&secret={$secret}&js_code={$code}&grant_type=authorization_code";

//初始化

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL,$api);

// 执行后不直接打印出来

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

curl_setopt($ch, CURLOPT_HEADER, false);

// 跳过证书检查

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

// 不从证书中检查SSL加密算法是否存在

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);

//执行并获取HTML文档内容

$output = curl_exec($ch);

//释放curl句柄

curl_close($ch);

return json_decode($output,true);

}

/**

* 1.小程序短发 token 给后端 (token = md5(session_key+openid))

* 2. 后端判断 token 是否存在 session中,存在则正常访问已授权

* 3. 不存在的话 ,判断openid 是否已经 添加数据库中,(添加: 老用户刷新token ,没有添加 新用户,进行存储信息返回token)

* @param $token

*/

function checkToken($token){

if(isset($_SESSION[$token])){ //token可使用

return '{"code":0,"msg":"token正常"}';

}else{

/**

* 已经把code获取到的 session_key 和 openid 存储在session里面啦key为token

*

* 1. 老用户 token过期 发配

* 2. 新用户 未token 注册后 发配

* 方法: 查询数据库 openId存在判断新老用户

*/

$info = getOpenid($code);

if(checkHave('jiechan_user','open_id',$info['openid']) == 1){ //存在(老用户)

//存储

$key = md5($info['session_key'].$info['openid']);

$_SESSION[$key] = array(

$session_key => $info['session_key'],

$openid => $info['openid']

)

if(isset($_SESSION[$key])){

echo '{"code":1,"token":"'.$key.'","msg":"刷新成功~"}';

}else{

echo '{"code":3,"msg":"刷新token失败~"}';

}

}else{ //新用户

echo "新用户";

//开始 添加数据库 然后 成功后创建token 返给小程序端,

}

}

}

checkToken();

}else{

echo '{"code":1,"msg":"请求方式错误!"}';

}

// code 0 token正常

// code 1 老用户刷新 token

// code 2 新用户 创建 token

// code 3 用户刷新token失败

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值