Fastadmin是一款基于TP5.0的快速开发框架,不过很久没更新了,微信授权登录这一块,考虑用easywechat实现,发现官方的naixiaoxin-wechat包,需要TP5.1+
所以官方的easywechat包可以用于TP,但不能用于fastadmin,自己尝试安装了一下,做个记录
尝试用composer将版本强行提高,wechat/overture到4.0+,tp内核到5.1+,可以装naixiaoxin,但是fastadmin直接挂了,没办法,最终多次尝试之后使用折衷方案(感觉naixiaoxin的包不知道有没有以前的版本,不是很会用,也许大佬有其他方案)
composer.json中将overtrue的版本更改为
"overtrue/wechat": "~4.0",
调用方式参考了这个链接 参考链接
然后在方法中调用,先使用
use EasyWeChat\Factory;
在\application\extra\下新建 wechat.php作为配置文件
<?php
return [
/**
* Debug 模式,bool 值:true/false
*
* 当值为 false 时,所有的日志都不会记录
*/
'debug' => false,
/**
* 账号基本信息,请从微信公众平台/开放平台获取
*/
'app_id' => 'xxxxx', // AppID
'secret' => 'xxxxxx', // AppSecret
'token' => 'xxxxx', // Token
'aes_key' => 'i0MbeyhX8lp5tlL7hRCjbLo2GdVNqCD3h7DcmFJmnGU',
'response_type' => 'array',
/**
* 日志配置
*
* level: 日志级别, 可选为:
* debug/info/notice/warning/error/critical/alert/emergency
* permission:日志文件权限(可选),默认为null(若为null值,monolog会取0644)
* file:日志文件位置(绝对路径!!!),要求可写权限
*/
'log' => [
'level' => 'debug',
'permission' => 0777,
'file' => '/tmp/easywechat.log',
],
/**
* OAuth 配置
*
* scopes:公众平台(snsapi_userinfo / snsapi_base),开放平台:snsapi_login
* callback:OAuth授权完成后的回调页地址
*/
'oauth' => [
'scopes' => ['snsapi_userinfo'],
'callback' => '/user/wechat/oauth_callback',
],
/**
* 微信支付
*/
'payment' => [
'merchant_id' => '135*****602',
'key' => '80b8682*****8fdac7784',
'cert_path' => ROOT_PATH . 'public/certs/wechat/apiclient_cert.pem', // XXX: 绝对路径!!!!
'key_path' => ROOT_PATH . 'public/certs/wechat/apiclient_key.pem', // XXX: 绝对路径!!!!
'notify_url' => 'http://*******/notify/wxpay',
],
/**
* Guzzle 全局设置
*
* 更多请参考: http://docs.guzzlephp.org/en/latest/request-options.html
*/
'guzzle' => [
'timeout' => 3.0, // 超时时间(秒)
'verify' => true, // 关掉 SSL 认证(强烈不建议!!!)
],
];
代码中实例化的时候使用如下方式
$app = Factory::officialAccount(config('wechat'));
后续使用的时候参考官方easywechat的一般使用方式就可以啦
$response = $app->oauth->scopes(['snsapi_userinfo'])
->redirect();
return $response;
可以正常授权,OK!