关于微信网页授权获取用户基本信息的切入问题

发布于 2022-09-01 06:03:56 字数 453 浏览 9 评论 0

微信网页授权获取用户基本信息
这个功能一直有一个疑问,没有想到很好的处理方式!
用户在如何跳转到网页授权这里的?这个要如何设置呢?
请大师指点!
我想了很多方式:
1、用户打开一个静态页面,使用window.locathion来跳转到微信授权的页面;
2、在菜单或者发送给用户的链接中,直接使用微信授权链接,在用户授权后,跳转到目标页面;
但是这两种方法有一定的弊端:使用snsapi_userinfo时,用户可能每次打开,都要授权,实际上,用户可能已经授权过了,于是想到了第三种方法:
3、用户打开目标页面,目标页面发送ajax请求到服务器,在服务器查询当前用户是否已经有过授权记录,如果有直接去获取用户基本信息,返回到页面;如果没有授权记录,则返回未授权信息给页面,页面再执行跳转请求微信授权。但是这样做,依然有一个点无法跨越,那就是在向服务器查询是否有授权记录时,需要的OpenID该从何而来?
求指点!谢谢!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

陌上青苔 2022-09-08 06:03:56

微信的授权登录,必须要用户通过微信浏览器打开了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中填写登录前的页面

太阳哥哥 2022-09-08 06:03:56

用session进行检查。
1. 如果session中没有openid记录,那么2; 如果有openid,跳到4
2. 记录当前页面的uri,跳转到授权页面,回调页面跳到3。
3. 根据code获取openid,获取用户信息,存入session,取出刚刚存的uri,跳转到uri,到步骤4。
4. 从session中取出微信用户信息执行业务逻辑

扛起拖把扫天下 2022-09-08 06:03:56

我现在也是这样的,先判断session中是否有openid,如果没有再去跳转到授权页面,授权页面跳到一个中转页面获取到openid存入session,再跳回最开始的页面,感觉这样非常慢,而且页面来回跳了几次~~真的是醉,而且微信貌似对没有绑定的域名有时候会自动的转换页面,有些按钮、链接都会失效

真心难拥有 2022-09-08 06:03:56

请问 session 需要做登出的逻辑吗 考虑到同一手机 登陆不同的微信

他夏了夏天 2022-09-08 06:03:56

请教一个问题,如果我拒绝授权,那我还想去别的页面,那么这个如何处理呢

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文