微信公众号网页授权:PHP获取微信用户昵称和头像

什么是网页授权?

当你在微信中打开一个公众号的网页时,如果想获取用户的微信昵称、头像等信息,就需要使用微信的"网页授权"功能。这就像是你去一个高级会所需要出示会员卡一样,微信需要确认你的网站确实属于这个公众号,才能放心地把用户信息交给你。

演示网站:gofly.v1kf.com

准备工作:设置网页授权域名

第一步:登录公众号后台

  1. 用电脑打开微信公众平台
  2. 扫码登录你的公众号账号

第二步:找到授权设置

  1. 在左侧菜单中找到【设置与开发】→【公众号设置】
  2. 点击【功能设置】选项卡
  3. 找到"网页授权域名"这一项

第三步:下载授权文件

  1. 点击"网页授权域名"后面的【设置】按钮
  2. 在弹出的窗口中,你会看到一个"下载授权文件"的链接,点击下载
  3. 这个文件通常命名为MP_verify_xxxxxx.txt(xxxxxx是一串随机字符)

第四步:上传授权文件到你的服务器

  1. 将这个文件上传到你网站的​​根目录​​下
    • 根目录就是你网站的主目录,比如访问www.yourdomain.com/时所在的目录
    • 如果你不确定根目录在哪里,可以咨询你的网站管理员或服务器提供商
  2. 确保可以通过网址直接访问到这个文件
    • 例如:www.yourdomain.com/MP_verify_xxxxxx.txt
    • 在浏览器中输入这个网址,应该能看到文件内容

第五步:填写并保存域名

  1. 回到公众号后台的设置页面
  2. 在输入框中填写你的网站域名(不需要带http://https://
    • 例如:www.yourdomain.comyourdomain.com
  3. 点击【保存】按钮

​注意​​:域名必须和你上传授权文件的域名完全一致,包括是否带www

技术实现:获取用户信息

设置好授权域名后,你的网站就可以通过微信的网页授权接口获取用户信息了。这个过程分为两步:

  1. ​引导用户授权​​:用户访问你的网页时,系统会跳转到微信的授权页面
  2. ​获取用户信息​​:用户同意授权后,微信会跳转回你的网站并带上一个code参数,你的服务器可以用这个code换取用户信息

示例代码(PHP)

// 第一步:构造授权URL
$redirect_uri = urlencode('https://www.yourdomain.com/callback.php'); // 授权后跳转的页面
$scope = 'snsapi_userinfo'; // 获取用户信息需要这个scope
$auth_url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=你的公众号APPID&redirect_uri={$redirect_uri}&response_type=code&scope={$scope}&state=STATE#wechat_redirect";

// 用户访问时重定向到授权页面
header("Location: $auth_url");
// callback.php 获取用户信息
$code = $_GET['code']; // 微信返回的code

// 第二步:用code换取access_token和openid
$token_url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=你的公众号APPID&secret=你的公众号APPSECRET&code={$code}&grant_type=authorization_code";
$token_data = json_decode(file_get_contents($token_url), true);

// 第三步:用access_token获取用户信息
$userinfo_url = "https://api.weixin.qq.com/sns/userinfo?access_token={$token_data['access_token']}&openid={$token_data['openid']}&lang=zh_CN";
$userinfo = json_decode(file_get_contents($userinfo_url), true);

// 现在你可以使用用户信息了
echo "昵称:" . $userinfo['nickname'];
echo "头像:" . $userinfo['headimgurl'];

常见问题解答

​Q:为什么我设置了授权域名还是获取不到用户信息?​
A:请检查:

  1. 授权文件是否上传到了正确的目录
  2. 域名是否填写正确(包括是否带www)
  3. 服务器是否支持HTTPS(微信要求必须是安全域名)

​Q:测试时为什么没有弹出授权页面?​
A:可能是以下原因:

  1. 用户已经授权过(微信会记住授权状态)
  2. 你使用的scope是snsapi_base(静默授权,不会弹出页面)
  3. 在微信开发者工具中测试时,需要正确配置

​Q:获取到的头像为什么是低分辨率的?​
A:微信默认返回的是46×46像素的头像,如果需要高清头像,可以在获取用户信息后,将头像URL中的/0改为/132,例如:
http://thirdwx.qlogo.cn/mmopen/xxxx/0http://thirdwx.qlogo.cn/mmopen/xxxx/132

总结

通过以上步骤,你的公众号网页就可以安全地获取用户的微信昵称和头像了。记住,获取用户信息需要用户明确授权,所以一定要在用户知情并同意的情况下使用这些信息。

posted @ 2025-06-16 22:39  唯一客服系统开发笔记  阅读(505)  评论(0)    收藏  举报