PbootCMS对接微信开放平台扫码登录
<?php
/**
* 微信公众号配置
* ============================================================================
* 版权所有 云管家网络科技有限公司
* 网站地址: https://www.kaifacn.com
* ============================================================================
*/
namespace coreasic;
use coreasicConfig;
class Wechat
{
protected $appid;
protected $secret;
public function __construct()
{
// 配置参数
$this->appid = Config::get('weixin_appid');
$this->secret = Config::get('weixin_secret');
}
// 获取登录二维码
public function getqrcode()
{
// 回调地址
$redirect_uri= get_http_url().Url::home('Member/login');
// 该回调需要url编码
$redirect_uri=urlencode($redirect_uri);
$url = "https://open.weixin.qq.com/connect/qrconnect?appid=".$this->appid."&redirect_uri=".$redirect_uri."&response_type=code&scope=snsapi_login&state=".session('access_token')."#wechat_redirect";
$result = get_url($url);
// 修改二维码路径
$result = str_replace("/connect/qrcode/", "https://open.weixin.qq.com/connect/qrcode/", $result);
// 简单优化一下页面样式
$result = str_replace('<body>','<style>.impowerBox .qrcode{width: 220px;margin-top:0px;}.impowerBox .icon38_msg {width: 30px;height: 30px;margin-left: 27px;}</style><body>',$result);
$result = str_replace('<div>微信登录</div>','',$result);
$result = str_replace('<p>“CMS开发网”</p>','',$result);
$result = str_replace('<h4>扫描成功</h4>','<h4>扫描成功,请点击授权!</h4>',$result);
$result = str_replace('<p>在微信中轻触允许即可登录</p>','',$result);
$result = str_replace('<p>你可再次扫描登录,或关闭窗口</p>','',$result);
$result = str_replace('<p>使用微信扫一扫登录</p>','<div><i></i>使用微信扫一扫登录</div>',$result);
echo $result;
}
// 获取登录授权信息
public function getWxUser()
{
$code = get('code');
$state = get('state');
if ($code && $state && session('access_token') == $state)
{
$url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=".$this->appid."&secret=".$this->secret."&code=".$code."&grant_type=authorization_code";
$jsonResult = file_get_contents($url);
$result = json_decode($jsonResult, true);
$data = $this->getAuthUserInfo($result['access_token'],$result['openid']);
return $data;
}
location(Url::home('member/login'));
}
// 获取用户信息
private function getAuthUserInfo($token, $openid)
{
$url = "https://api.weixin.qq.com/sns/userinfo?access_token=".$token."&openid=".$openid."&lang=zh_CN";
$result = json_decode(get_url($url));
if (isset($result->errcode) && $result->errcode)
{
location(Url::home('member/login'));
}
return $result;
}
}
放在/core/basic里面,需自行处理登录业务逻辑,本教程使用微信开放平台配置
相关文章
- 微信iOS系统更新啦!苹果放行,网友热议背后的利益博弈。
- 淘宝正式宣布接入微信支付,电商巨头合作引发热议!支付宝地位会受影响吗?
- iOS版微信居然连续两月“沉默”,背后的原因你猜到了吗?
- 深夜,一家三口竟在446人的村微信群内公然互骂,持续整整一小时!
- 如何在Win7系统上高效使用微信的技巧与注意事项
- OPPO K12微信消息不显示怎么处理?
- 还在为微信未读消息太多而烦恼吗?教你一招,微信竟然可以自动定位未读消息!
- 如何在Win10微信中高效管理联系人:专业技巧分享
- 微信支付再迎新突破,与京东支付、三大通讯运营商实现条码支付互通。
- Discuz教程:使用微信登陆出现“目前无法通过微信登录”等故障解