我在开放平台申请的网站应用已过审核,授权回调域已填写,能力专区中微信登陆、拉起小程序已获得。我现在在我的平台生成了二维码扫码后跳转到了:https://open.weixin.qq.com/connect/qrconnect?appid=XXX&redirect_uri=https%3A%2F%2FXXX%2Flogin%2Fcallback&response_type=code&scope=snsapi_login&state=101edd89b7468850ae72ab6e8dfca269#wechat_redirect。这个页面又显示了二维码需要扫码登陆。
private function getWechatAuthUrl() {
$appid = Config::get('wechat.appid', '');
$loginCallback = Config::get('wechat.login_callback', '');
$redirectUri = urlencode($loginCallback);
$scope = Config::get('wechat.auth_scope', 'snsapi_login');
$state = md5(uniqid(rand(), true));
// 保存state到session,用于验证回调的真实性
$_SESSION['wechat_state'] = $state;
// 生成微信授权URL
return sprintf(
$appid,
$redirectUri,
$scope,
$state
);
private function getWechatLoginUrl() {
$wechatAuthUrl = $this->getWechatAuthUrl();
// 使用endroid/qr-code库生成二维码图片
// 引入自动加载文件(如果尚未加载)
if (!class_exists('Endroid\QrCode\QrCode')) {
require_once ROOT_PATH . '/vendor/autoload.php';
}
// 创建二维码对象,使用微信官方的授权URL
$qrCode = new \Endroid\QrCode\QrCode($wechatAuthUrl);
$qrCode->setSize(300);
$qrCode->setMargin(10);
// 设置前景色和背景色
$qrCode->setForegroundColor(new \Endroid\QrCode\Color\Color(0, 0, 0, 0));
$qrCode->setBackgroundColor(new \Endroid\QrCode\Color\Color(255, 255, 255, 0));
// 生成Data URI格式的图片
$writer = new \Endroid\QrCode\Writer\PngWriter();
$result = $writer->write($qrCode);
$dataUri = $result->getDataUri();
}
