公众号中点击第三方网页时如何顺带openId
2018-01-30 14:54
260 查看
openId是公众号中关注者的唯一标识,在同一个公众号中不同微信号有不同的openId。
当一个用户关注了公众号,然后点击了我们放在公众号内的一个第三方页面,比如是一个登陆页面,需要用户收入手机号和验证码进行登陆,则在用户提交表单时,我希望后台还可以获取到这个用户的openId,这样下一次用户再进入这个页面时,我可以自动获取这个用户的手机号、实现自动登陆。
如何能够使得后台能够获取用户的openId?需要我们修改一下提交表单的网址。
比如正常的登陆网址是http://www.whaty.com?phone=15210588777&validcode=1234,那么需要改成
其中:
1、redirect_uri的值是原网址进行UrlEncode之后的网址。
2、scope有两种,snsapi_base是静默授权,只能用于已关注用户;snsapi_userinfo是会跳出一个授权窗口,用户点击允许之后,才会跳到redirect_uri,好处是也可以用于非关注用户。对于已关注公众号的用户,如果用户从公众号的会话或者自定义菜单进入本公众号的网页授权页,即使是scope为snsapi_userinfo,也是静默授权,用户无感知。
微信的这个接口会自动跳转到redirect_uri,只不过会在后面自动添加上code参数(自动生成的)和state参数(我们自定义的)
这时候在服务端,我们就可以根据code获取openId了:
code说明 : code作为换取access_token的票据,每次用户授权带上的code将不一样,code只能使用一次,5分钟未被使用自动过期。
然后请求以下接口:
正确时返回json数据
到此我们成功获取到了用户的openid。
参考微信API文档:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140842
当一个用户关注了公众号,然后点击了我们放在公众号内的一个第三方页面,比如是一个登陆页面,需要用户收入手机号和验证码进行登陆,则在用户提交表单时,我希望后台还可以获取到这个用户的openId,这样下一次用户再进入这个页面时,我可以自动获取这个用户的手机号、实现自动登陆。
如何能够使得后台能够获取用户的openId?需要我们修改一下提交表单的网址。
比如正常的登陆网址是http://www.whaty.com?phone=15210588777&validcode=1234,那么需要改成
https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx520c15f417810387&redirect_uri=http%3a%2f%2fwww.whaty.com%3fphone%3d15210588777%26validcode%3d1234&response_type=code&scope=snsapi_base&state=123#wechat_redirect
其中:
1、redirect_uri的值是原网址进行UrlEncode之后的网址。
2、scope有两种,snsapi_base是静默授权,只能用于已关注用户;snsapi_userinfo是会跳出一个授权窗口,用户点击允许之后,才会跳到redirect_uri,好处是也可以用于非关注用户。对于已关注公众号的用户,如果用户从公众号的会话或者自定义菜单进入本公众号的网页授权页,即使是scope为snsapi_userinfo,也是静默授权,用户无感知。
微信的这个接口会自动跳转到redirect_uri,只不过会在后面自动添加上code参数(自动生成的)和state参数(我们自定义的)
这时候在服务端,我们就可以根据code获取openId了:
String code = request.getParameter("code");//我们要的code
code说明 : code作为换取access_token的票据,每次用户授权带上的code将不一样,code只能使用一次,5分钟未被使用自动过期。
然后请求以下接口:
https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
正确时返回json数据
{ "access_token":"ACCESS_TOKEN", "expires_in":7200, "refresh_token":"REFRESH_TOKEN", "openid":"OPENID", "scope":"SCOPE" }
到此我们成功获取到了用户的openid。
参考微信API文档:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140842
相关文章推荐
- 如何才能实现在点击链接时直接在网页中打开word文档,但不提示保存
- 如何点击网页上的某个链接,达到启动本机应用程序的目的。
- JSP中如何使浏览器点击后退按钮再点击前进按钮时,使网页失效
- 如何让用户点击返回的时候让网页过期呢,就像很多在线银行的一样
- 如何用webbrowser自动点击网页中的一个按钮
- 微信开放平台 公众号第三方平台开发 教程五 代公众号发起网页授权源码
- 公众号第三方平台开发 - 教程五 代公众号发起网页授权源码
- 公众号网页授权保存refresh token,access token和openid
- web和webApp如何显示第三方网页链接
- 如何点击一个图标进入一个网页
- 如何获取微信用户的Openid详解(微信网页授权)
- 如何获取微信用户的Openid详解(微信网页授权)
- 单一静态网页如何实现点击左边菜单在右边展现内容
- dcloud-如何在webview中(本页)嵌入第三方网页
- Android开发之如何在WebView中点击链接使用自身打开(解决出现的选择使用第三方应用的问题)
- 网页上如何实现点击一张图片弹出QQ聊天窗口?
- 如何点击按纽后将查看这个网页所用的时间记录到数据库里去?
- 如何使点击webview控件里的网页链接时不跳出应用
- 第三方控件DEV的TreeList如何获取点击的行值!
- 第三方推送过来的消息,用户点击如何处理