php微信网页授权代码

胜哥 PHP代码

下面是一个简单的 PHP 微信网页授权代码,可以实现用户在微信里打开网页,然后授权登录并获取用户信息的功能。

<?php
// 微信公众号信息
$appId = 'your-app-id'; // 公众号 AppId
$appSecret = 'your-app-secret'; // 公众号 AppSecret
// 获取 code 和 state 参数
$code = $_GET['code'];
$state = $_GET['state'];
// 如果没有 code 参数,说明用户还没有授权,需要跳转到微信授权页面
if (empty($code)) {
  // 构造微信授权页面的 URL
  $redirectUri = urlencode('http://your-domain.com/wechat_auth.php');
  $authorizeUrl = "https://open.weixin.qq.com/connect/oauth2/authorize?appid={$appId}&redirect_uri={$redirectUri}&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect";
  // 跳转到微信授权页面
  header("Location: {$authorizeUrl}");
  exit;
}
// 如果有 code 参数,说明用户已经授权,可以通过 code 参数获取 access_token 和 openid
$url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid={$appId}&secret={$appSecret}&code={$code}&grant_type=authorization_code";
$res = file_get_contents($url);
$res = json_decode($res, true);
// 如果获取 access_token 和 openid 失败,返回错误信息
if (empty($res['access_token']) || empty($res['openid'])) {
  echo "获取 access_token 和 openid 失败";
  exit;
}
// 获取用户信息
$access_token = $res['access_token'];
$openid = $res['openid'];
$url = "https://api.weixin.qq.com/sns/userinfo?access_token={$access_token}&openid={$openid}&lang=zh_CN";
$res = file_get_contents($url);
$res = json_decode($res, true);
// 如果获取用户信息失败,返回错误信息
if (empty($res['nickname'])) {
  echo "获取用户信息失败";
  exit;
}
// 打印用户信息
echo "欢迎您,{$res['nickname']}!";
?>

这段代码实现了以下功能:

  1. 如果没有 code 参数,说明用户还没有授权,需要跳转到微信授权页面。
  2. 如果有 code 参数,说明用户已经授权,可以通过 code 参数获取 access_token 和 openid。
  3. 获取用户信息。
  4. 打印用户信息。 需要注意的是,该代码需要在公网上的 PHP 环境下运行,并且需要正确配置微信公众号的 AppId 和 AppSecret。

同时,该代码只是一个简单的示例,实际使用中还需要做更多的安全性和错误处理。