指尖上的记忆指尖上的记忆
首页
  • 基础
  • Laravel框架
  • Symfony框架
  • 基础
  • Gin框架
  • 基础
  • Spring框架
  • 命令
  • Nginx
  • Ai
  • Deploy
  • Docker
  • K8s
  • Micro
  • RabbitMQ
  • Mysql
  • PostgreSsql
  • Redis
  • MongoDb
  • Html
  • Js
  • 前端
  • 后端
  • Git
  • 知识扫盲
  • Golang
🌟 gitHub
首页
  • 基础
  • Laravel框架
  • Symfony框架
  • 基础
  • Gin框架
  • 基础
  • Spring框架
  • 命令
  • Nginx
  • Ai
  • Deploy
  • Docker
  • K8s
  • Micro
  • RabbitMQ
  • Mysql
  • PostgreSsql
  • Redis
  • MongoDb
  • Html
  • Js
  • 前端
  • 后端
  • Git
  • 知识扫盲
  • Golang
🌟 gitHub
在做项目的时候,经常会涉及到获取微信用户信息,主要有如下两种方法实现:
①通过网页授权的方式获取,步骤如下:
1 第一步:用户同意授权,获取code
请求链接为:
在确保微信公众账号拥有授权作用域(scope参数)的权限的前提下(已认证服务号,默认拥有 scope 参数中的snsapi_base和snsapi_userinfo 权限),引导关注者打开如下页面:
https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect

2 第二步:通过 code 换取网页授权access_token 和openid(不管 scope为snsapi_base和snsapi_userinfo中的哪种方式,都会有值,只是为snsapi_base的时候,没有了第四步操作)
获取 code 后,请求以下链接获取access_token:
https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code

3 第三步:刷新access_token(如果需要)
获取第二步的refresh_token后,请求以下链接获取access_token:
https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=APPID&grant_type=refresh_token&refresh_token=REFRESH_TOKEN

4 第四步:拉取用户信息(需 scope 为 snsapi_userinfo),通过access_token 和openid
http:GET(请使用 https 协议):
https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN

5 附:检验授权凭证(access_token)是否有效
http:GET(请使用 https 协议):
https://api.weixin.qq.com/sns/auth?access_token=ACCESS_TOKEN&openid=OPENID


②通过UnionID机制
这个机制的原理是:在关注者与公众号产生消息交互后,公众号可获得关注者的OpenID(加密后的微信号,每个用户对每个公众号的 OpenID 是唯一的。对于不同公众号,同一用户的 openid 不同)。
公众号可通过本接口来根据 OpenID 获取用户基本信息,包括语言和关注时间。

开发者可通过 OpenID 来获取用户基本信息。请使用 https 协议。
接口调用请求说明 http请求方式: GET https://api.weixin.qq.com/cgi-bin/user/info?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN

这里的 access_token 是 调用接口凭证(和网页授权的那个不一样,就是全局唯一的那个access_token,通过https请求方式: GET https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET 获取) ,
openid 是 普通用户的标识,对当前公众号唯一

但是种方式,2021年12月27日之后,不再输出头像、昵称信息。如果要获取 必须经过用户网页授权才能拿到。


所有文档见:
https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_webpage_authorization.html
https://developers.weixin.qq.com/doc/offiaccount/User_Management/Get_users_basic_information_UnionID.html#UinonId


    //在开发过程中经常会有下面的用法,来验证获取用户信息的方式
    public function rules()
    {
        return [
            'code' => 'required_without:access_token|string', //第一种
            'access_token' => 'required_without:code|string', //第二种
            'openid'  => 'required_with:access_token|string', //第二种
        ];
    }