博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
easywechat (在thinkphp5中使用easywechat完成微信网页认证)
阅读量:5101 次
发布时间:2019-06-13

本文共 1971 字,大约阅读时间需要 6 分钟。

由于在easywechat中没有提及在thinkphp中的使用,后来我在中找到了有人已经封装了一下,我把自己使用的过程写下来与大家共勉

 

在thinkphp中安装easywechat

1.使用composer下载

使用命令行进入thinkphp根目录

然后运行下面的命令:

  1. composer require hooklife/thinkphp5-wechat

然后发布配置文件到项目根目录

  1. php think wechat:config

然后你会看到application目录下多了一个extra文件夹,里面有一个wechat.php,如果报错了,请参考 https://www.ailoli.org/archives/72/,这样就算是引入成功了

然后

填写配置文件需要填写的项

示例:

'debug' => true,

/**
* 账号基本信息,请从微信公众平台/开放平台获取
*/
'app_id' => '......', // AppID
'secret' => '......', // AppSecret
'token' => '......', // Token
'aes_key' => '',

 

'oauth' => [

'scopes' => ['snsapi_userinfo'],
'callback' => '回调地址',
],

然后,在原代码基础上创建一个控制器(与微信相关):Wechat1.php,

在里面定义一个变量app

$options = Config::get('wechat');

$app = new Application($options);

这样就能够使用app变量了,其他的用法参照文档即可

 

配置和原来类似,我是在Wechat1.php中定义一个serve方法

public function serve(){

$server = self::$app->server;
$server->setMessageHandler(function ($message) {
  return '你好';
});
$server->serve()->send();
}

在微信公众号后台验证token的url写能够访问到这个serve方法的链接即可验证成功

 

 

下面重点说明我使用easywechat进行网页授权过程

在需要授权的控制器Personal.php中的写了

static $app;

public function _initialize()
{
if (empty(session('id'))){
self::$app = Wechat1::return_app();
$oauth = self::$app->oauth;
session('target_url',$_SERVER['PATH_INFO']);
if (empty(session('wechat_user'))){
$oauth->redirect()->send();
}else{
$user = session('wechat_user');
$open_id = $user['original']['openid'];

//查询数据库中用户的账号的openid中是否有值,有值说明用户的微信与账号绑定

$student_no = self::check_login($open_id);
if ($student_no!=0){
session('id',$student_no);
$this->redirect(session('target_url'));
}else{
$this->redirect('index/Index/login');
}

}

}
}

 

然后在Wechat1.php中写了一个授权回调的方法

public function oauth(){

$oauth = self::$app->oauth;
$user = $oauth->user();
session('wechat_user',$user->toArray());
$targetUrl = session('target_url');
$this->redirect($targetUrl);
}

 

注:上面的配置文件中的回调函数就写能够找到oauth方法的地址即可

 

这样就能够完成微信网页授权,授权过的微信的用户信息存在session中,之后用到该用户信息的时候,只需要从session中取即可

 

 

 

### 注:现在官方网站上面支持thinkphp了,可以使用官方支持的扩展包,应该会更方便一些!!!

转载于:https://www.cnblogs.com/zhuchenglin/p/6863697.html

你可能感兴趣的文章
四重解法---P1047 校门外的树
查看>>
大马猴队-Alpha阶段项目复审
查看>>
集群时间同步
查看>>
Ubuntu16.04 + Win 10 双系统 时间同步,启动项顺序,NumLock指示灯常亮
查看>>
win10桌面显示我的电脑设置
查看>>
VxWorks各部分初始化流程 分类: vxWorks ...
查看>>
给你90天,成为不一样的自己!
查看>>
python版本下载时时,官方目录web-based与executable和embeddable 的区别
查看>>
Java程序单元测试工具对比——Parasoft Jtest与Junit
查看>>
js/jquery中什么时候用return,什么时候用return false
查看>>
Android开发 MVP模式的规范记录(个人总结)
查看>>
hadoop2.2使用手册2:如何运行自带wordcount
查看>>
ByteArrary(优化数据存储和数据流)
查看>>
Unity3D脚本中文系列教程(十五)
查看>>
从你的全世界路过-孤独的放逐
查看>>
java 实现多线程 3种方式
查看>>
<s:fielderror/>使用
查看>>
python编写启发式算法--在pycharm里面安装numpy就用了两个小时,哭了
查看>>
转:IT部门应如何制定技术路线图
查看>>
使用redis完成搜索/分页/排序
查看>>