微信oauth2.0,通过snsapi_base获取用户信息bug(可能算是我的场景造成的)

来源:互联网 发布:淘宝网裤袜 编辑:程序博客网 时间:2024/05/08 07:44

官方文档地址:http://mp.weixin.qq.com/wiki/17/c0f37d5704f0b64713d5d2c37b468d75.html

场景

 链接xxx.com/xxx.html需要获取用户openid,然后跳转回来继续访问。

差不多意思是2次访问同一链接的情况,但是第一次没有获取openid,第二次是已经获取到openid

流程

1.点击链接,假如无openid,通过oauth2.0去验证,session记录链接xxx.com/xxx.html( 目的是为了最后能返回来)

2.验证拿到code跳转到自己指定的redirecct_uri(如xxx.com/yyy.html),获取openid,写session保存(避免每次进来都去微信取)

3.做完这些再跳转到xxx.com/xxx.html  (假如跳转的链接跟点击的链接不一样则没有关系)

问题来了,第3步,点击 “复制链接”  然后随便找个地方粘贴,会发现:你手机显示的内容是xxx.com/xxx.html所要显示的内容,但是链接是xxx.com/yyy.html

这不是坑爹吗?为啥?不知道有没有人碰到过我这种场景。


解决办法:

session记录的地址  xxx.com/xxx.html后面随便跟个参数使此链接跟访问的链接不一样即可

骂人但是,又突然想了下,发现,假如别人是通过你分享的链接来访问的那该怎么办,问题还是会有,那么要2个参数切换。。。

public function replaceUrl($url){$contact = strpos($url, '?') === FALSE ? '?' : '&';if(strpos($url, 'weixinrp=') === FALSE && strpos($url, 'weixinrp1=') === FALSE) {$url .= $contact.'weixinrp=1';} elseif(strpos($url, 'weixinrp=') !== FALSE) {$url = str_replace('weixinrp=', 'weixinrp1=', $url);} elseif(strpos($url, 'weixinrp1=') !== FALSE) {$url = str_replace('weixinrp1=', 'weixinrp=', $url);}return $url;}


0 0