在微信里点登录后页面白屏,右上角菜单还能用,地址栏看不到。同一台手机复制链接到 Safari 打开就正常,安卓和 iOS 都能复现。日志里能对上时间点,这种反而好排。

微信内置浏览器对跳转到外部域名的授权页有限制,回调域名又和公众号配置的不一致,跳转被静默拦下。页面里没有兜底提示,用户只看到空白。这一点先确认清楚,后面就不用反复试。

if (strpos($_SERVER['HTTP_USER_AGENT'], 'MicroMessenger') !== false) {
  $url = $oauthUrl . '&scope=snsapi_userinfo#wechat_redirect';
  wp_redirect($url); exit;
}

「微信内置浏览器 OAuth」排查到最后往往是很小的一处差异,前面那些复杂猜测可以先放一放。线上出问题先对时间点,跟发布、备份、任务执行的时刻排一排,能省掉一半功夫。

处理上按这个顺序:授权跳转前判断 UA 是否在微信内,是就走公众号网页授权那条链路;回调域名在公众号后台配全,别只配主域;跳转失败时给一个在浏览器中打开的引导,别留白屏;在微信里从消息链接点进去测一遍,直接输网址测不出问题。

结果对不对很好判断,微信里点登录能落到授权页,授权完回到站内并且是登录态。

作者 9823189