PHP 第38章 微信公众号登录 PHP 第38章 微信公众号登录

2024-09-22

一、微信公众号登录原理

微信公众号登录主要分为两个步骤:OAuth2.0 授权验证和获取用户信息。具体流程如下:

  • 用户在公众号内点击登录按钮,跳转到微信授权页面

  • 用户同意授权后,微信会将用户的 code 发送给开发者的服务器

  • 开发者的服务器通过 code 换取用户的 access_token 和 openid

  • 开发者使用 access_token 和 openid 获取用户的基本信息

官方开发文档

https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_webpage_authorization.html

二、PHP 实现微信公众号登录

下面我们将使用 PHP 实现微信公众号登录的功能。

首先需要安装 curl 扩展,然后编写一个简单的 PHP 脚本来处理微信服务器发来的请求。

2.1、获取 access_token 和 openid

function getAccessToken($appId, $secret) {
   $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$appId}&secret={$secret}";
   $res = json_decode(file_get_contents($url), true);
   return $res['access_token'];
}

function getOpenId($accessToken, $code) {
   $url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid={$appId}&secret={$secret}&code={$code}&grant_type=authorization_code";
   $res = json_decode(file_get_contents($url), true);
   return $res['openid'];
}

2.2、获取用户信息

function getUserInfo($accessToken, $openId) {
   $url = "https://api.weixin.qq.com/sns/userinfo?access_token={$accessToken}&openid={$openId}〈=zh_CN";
   $res = json_decode(file_get_contents($url), true);
   return $res;
}

2.3、将以上函数组合起来,实现完整的登录功能

$appId = 'your_app_id'; // 替换为你的微信公众号的AppID
$secret = 'your_app_secret'; // 替换为你的微信公众号的AppSecret
$code = $_GET['code']; // 从前端获取code参数

if (!empty($code)) {
   $accessToken = getAccessToken($appId, $secret); // 获取access_token和openid
   $openId = getOpenId($accessToken, $code); // 根据access_token和code获取openid
   $userInfo = getUserInfo($accessToken, $openId); // 根据access_token和openid获取用户信息
   unset($accessToken, $openId); // 释放内存空间
} else {
   echo "请从前端传递code参数"; // 如果没有code参数,提示用户从前端传递code参数
}


阅读 167