ThinkPHP中微信授权登录具体是如何实现的?

2026-04-28 23:061阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计892个文字,预计阅读时间需要4分钟。

ThinkPHP中微信授权登录具体是如何实现的?

ThinkPHP+ 没有内置

怎么拼出正确的微信授权跳转 URL

入口控制器里不能靠 config() 直接拼 URL,必须严格 urlencode 所有参数,尤其是 redirect_uri。微信要求它和公众号后台填写的值**完全一致**:协议、域名、端口、路径、结尾斜杠都不能差。

  • scope=snsapi_userinfo 才能拿到昵称头像;scope=snsapi_base 只拿得到 openid(静默授权)
  • state 必须是服务端生成并存入 session 的随机字符串,回调时比对,防 CSRF
  • URL 示例:"https://open.weixin.qq.com/connect/oauth2/authorize?appid=".config('wechat.app_id')."&redirect_uri=".urlencode('http://localhost:8000/callback/wechat')."&response_type=code&scope=snsapi_userinfo&state=".$_SESSION['wx_state']."#wechat_redirect"
  • 别漏掉末尾的 #wechat_redirect,否则在微信内打开会白屏

回调里怎么安全换 token 和拉用户信息

收到 code 后必须立刻请求换 token,不能缓存、不能复用、不能跨请求使用 —— code 5 分钟过期且仅能使用一次。

阅读全文

本文共计892个文字,预计阅读时间需要4分钟。

ThinkPHP中微信授权登录具体是如何实现的?

ThinkPHP+ 没有内置

怎么拼出正确的微信授权跳转 URL

入口控制器里不能靠 config() 直接拼 URL,必须严格 urlencode 所有参数,尤其是 redirect_uri。微信要求它和公众号后台填写的值**完全一致**:协议、域名、端口、路径、结尾斜杠都不能差。

  • scope=snsapi_userinfo 才能拿到昵称头像;scope=snsapi_base 只拿得到 openid(静默授权)
  • state 必须是服务端生成并存入 session 的随机字符串,回调时比对,防 CSRF
  • URL 示例:"https://open.weixin.qq.com/connect/oauth2/authorize?appid=".config('wechat.app_id')."&redirect_uri=".urlencode('http://localhost:8000/callback/wechat')."&response_type=code&scope=snsapi_userinfo&state=".$_SESSION['wx_state']."#wechat_redirect"
  • 别漏掉末尾的 #wechat_redirect,否则在微信内打开会白屏

回调里怎么安全换 token 和拉用户信息

收到 code 后必须立刻请求换 token,不能缓存、不能复用、不能跨请求使用 —— code 5 分钟过期且仅能使用一次。

阅读全文