下面是一个简单的 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']}!"; ?>
这段代码实现了以下功能:
- 如果没有 code 参数,说明用户还没有授权,需要跳转到微信授权页面。
- 如果有 code 参数,说明用户已经授权,可以通过 code 参数获取 access_token 和 openid。
- 获取用户信息。
- 打印用户信息。 需要注意的是,该代码需要在公网上的 PHP 环境下运行,并且需要正确配置微信公众号的 AppId 和 AppSecret。
同时,该代码只是一个简单的示例,实际使用中还需要做更多的安全性和错误处理。
评论