关于微信网页授权获取用户基本信息的切入问题
微信网页授权获取用户基本信息
这个功能一直有一个疑问,没有想到很好的处理方式!
用户在如何跳转到网页授权这里的?这个要如何设置呢?
请大师指点!
我想了很多方式:
1、用户打开一个静态页面,使用window.locathion来跳转到微信授权的页面;
2、在菜单或者发送给用户的链接中,直接使用微信授权链接,在用户授权后,跳转到目标页面;
但是这两种方法有一定的弊端:使用snsapi_userinfo时,用户可能每次打开,都要授权,实际上,用户可能已经授权过了,于是想到了第三种方法:
3、用户打开目标页面,目标页面发送ajax请求到服务器,在服务器查询当前用户是否已经有过授权记录,如果有直接去获取用户基本信息,返回到页面;如果没有授权记录,则返回未授权信息给页面,页面再执行跳转请求微信授权。但是这样做,依然有一个点无法跨越,那就是在向服务器查询是否有授权记录时,需要的OpenID该从何而来?
求指点!谢谢!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
微信的授权登录,必须要用户通过微信浏览器打开了
https://open.weixin.qq.com/connect/oauth2/authorize?appid=*************
页面的。所以你第三个方法是没办法的。我现在是用你的第二个方法:用户打开需要登录的页面,马上判断登录状态,没登陆就跳转到微信授权页面,获取到code了就可以登录了,登录完再跳转到登录前的页面。
ps.我用了一个小技巧来告诉我的登录控制器,登录前用户打开的页面是哪个页面,就是利用微信授权页面的
redirect_uri
参数,直接给你看我的一个例子https://open.weixin.qq.com/connect/oauth2/authorize?appid=*********&redirect_uri=http%3A%2F%2Fwww.17171777.com%2F%2Fmobile%2Findex.php%3Fc%3Dweixin%26a%3Dlogin%26frontUrl%3Dhttp%253A%252F%252Fwww.17171777.com%252F%252Fmobile%252Findex.php%253Fc%253Dmember%2526a%253Dindex&response_type=code&scope=snsapi_base&state=snsapi_base&connect_redirect=1#wechat_redirect
我登录的时候无论怎样都是会返回登录控制器的,然后由登录控制器判断是否获取code成功,最后是登录还是注册都是由登录控制器决定,最终登录成功了,由登录控制器返回登录前的页面,而不是直接在
redirect_uri
中填写登录前的页面用session进行检查。
1. 如果session中没有openid记录,那么2; 如果有openid,跳到4
2. 记录当前页面的
uri
,跳转到授权页面,回调页面跳到3。3. 根据code获取openid,获取用户信息,存入session,取出刚刚存的
uri
,跳转到uri
,到步骤4。4. 从session中取出微信用户信息执行业务逻辑
我现在也是这样的,先判断session中是否有openid,如果没有再去跳转到授权页面,授权页面跳到一个中转页面获取到openid存入session,再跳回最开始的页面,感觉这样非常慢,而且页面来回跳了几次~~真的是醉,而且微信貌似对没有绑定的域名有时候会自动的转换页面,有些按钮、链接都会失效
请问 session 需要做登出的逻辑吗 考虑到同一手机 登陆不同的微信
请教一个问题,如果我拒绝授权,那我还想去别的页面,那么这个如何处理呢