首页 > 其他分享 >网页授权获取用户基本信息

网页授权获取用户基本信息

时间:2023-06-01 16:35:02浏览次数:45  
标签:redirect openid code 网页 用户 获取 授权

https://mp.weixin.qq.com/wiki/17/c0f37d5704f0b64713d5d2c37b468d75.html

 

这个应用是 在微信客户端中访问第三方网页时,如果想要获取用户的一些信息,可以通过这个授权方式获取。

如果不想获取用户的一些信息,则不需要授权。

 

授权分为两种:一种是静默方式(snsapi_base),另一种是需要提示用户进行点击(snsapi_userinfo )

静默方式获取的用户信息少,仅有openid

另一种方式获取的用户信息多,比如性别、昵称等

静默方式可以直接进入到业务页面,体验较好,如果事先关注过公众号,则可以用这种方式(可以用openid自行查询其他信息)

 

一个实际应用中的例子:

在微信公众号中有一个菜单,对应链接为

https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxc37d78660d2a1328&redirect_uri=http://wx.hehe120.com/wxplatform/menu2quickConsult.html?response_type=code&scope=snsapi_base&state=gh_045a258c1199&connect_redirect=1#wechat_redirect

 

redirect_uri 对应的就是授权回调域名

如果设置 wx.hehe120.com

是可以对下面的路径进行授权的http://wx.hehe120.com/wxplatform/

 

参数是否必须说明
appid 公众号的唯一标识
redirect_uri 授权后重定向的回调链接地址,请使用urlencode对链接进行处理
response_type 返回类型,请填写code
scope 应用授权作用域,snsapi_base (不弹出授权页面,直接跳转,只能获取用户openid),snsapi_userinfo (弹出授权页面,可通过openid拿到昵称、性别、所在地。并且,即使在未关注的情况下,只要用户授权,也能获取其信息
state 重定向后会带上state参数,开发者可以填写a-zA-Z0-9的参数值,最多128字节
#wechat_redirect 无论直接打开还是做页面302重定向时候,必须带此参数

实际当中的步骤

1. 点击这个菜单

2. 这个是静默授权方式,会返回一个 code 

3. 拿着这个code 和微信公众号的一些信息获取token

请求:

https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code

响应:

{
   "access_token":"ACCESS_TOKEN",
   "expires_in":7200,
   "refresh_token":"REFRESH_TOKEN",
   "openid":"OPENID",
   "scope":"SCOPE",
   "unionid": "o6_bmasdasdsad6_2sgVt7hMZOPfL"
}

 

下面这个是实际项目中如何解析出上面的结果的openid

    public static String getOpenID(SysWx sysWx, String code) {

        // 用户同意授权
        String url = WxConstants.AUTHORIZE_URI + "appid=" + sysWx.getAppId() + "&secret=" + sysWx.getSecret() + "&code="
                + code + "&grant_type=authorization_code";

        String jsonStr = HttpUtils.get(url);
        JSONObject jsonObject = null;
        try {
            jsonObject = JSONObject.fromObject(jsonStr);
        } catch (JSONException e) {
            logger.error("获取用户opendId 失败");
        }
        String openid = null;
        if (jsonObject != null && jsonObject.containsKey("openid")) {
            openid = jsonObject.getString("openid");
        }
        if (openid == null) {
            logger.error("获取微信openid 失败,null");
        } else {
            logger.info("获取微信openid:" + openid);
        }
        return openid;
    }

 

拿到openid 之后就万事大吉了!

标签:redirect,openid,code,网页,用户,获取,授权
From: https://www.cnblogs.com/zno2/p/6028927.html

相关文章

  • 微信公众平台 网页授权域名设置
    目录是公众号设置-功能设置-网页授权域名设置 页面说明如下:用户在网页授权页同意授权给公众号后,微信会将授权数据传给一个回调页面,回调页面需在此域名下,以确保安全可靠。注意事项:1、回调页面域名或路径需使用字母、数字及“-”的组合(例:wx.qq.com或wx.qq.com/mp),不支持IP......
  • Android获取当前系统日期和时间的三种方法
    第一种方法SimpleDateFormatsimpleDateFormat=newSimpleDateFormat("yyyy年MM月dd日HH:mm:ss");//HH:mm:ss//获取当前时间Datedate=newDate(System.currentTimeMillis());time1.setText("Date获取当前日期时间"+simpleDateFormat.format(date)); ......
  • 5.部署tomcat+war包的java网页项目
    1.将war包丢到tomcat-webapps目录下2.修改war包下的数据库配置文件:datasource.propertiescd/usr/local/tomcat/apache-tomcat-8.5.41/webapps/recruit.students/WEB-INF/classesvidatasource.properties 3.用dbeaver连接数据库并导入数据库文件   点击恢复数据库......
  • c# winform 网页录制执行脚本功能
    支持输入指定的网址支持配置点击位置支持查找网页元素支持模拟输入内容,不影响其他操作支持循环运行支持调整执行顺序支持删除指令行支持adsl拨号支持清楚浏览器cookie  ......
  • 网页主题切换的实现方案
    各位看官大家好,想必大家在工作中一定遇到了网页主题切换或者一键换肤的功能,接下来我为大家整理了以下几种实现方案供大家参考学习。也请大家评论补充。方案一:通过link标签动态引入其做法就是提前准备好几套CSS主题样式文件,在需要的时候,创建link标签动态加载到head标签中,或者是......
  • aardio获取exe文件的版本号
    看文档以为是这样取varinfo=fsys.version.getInfo(io._exepath);fsys.version.getInfo(io._exepath).productVersion;或者fsys.version.getInfo(io._exepath).fileVersion;结果不是,返回的是1.2.3.4中的一个数字  后来才查到要自己拼接varr=fsys.version.getInfo......
  • SQL语句获取当天,昨天,本周,上周,本月,上月的起始时间和结束时间
    目录今天昨天本周上周本月上月今天SELECTDATE_FORMAT(NOW(),'%Y-%m-%d00:00:00')AS'今天开始';SELECTDATE_FORMAT(NOW(),'%Y-%m-%d23:59:59')AS'今天结束';昨天SELECTDATE_FORMAT(DATE_SUB(CURDATE(),INTERVAL1DAY),'%Y-%m-%d00:00:0......
  • exifread库可以获取的图片元数据信息
    使用exifread库可以提取图像的各种基础信息,包括但不限于以下内容:1.相机信息:-相机制造商(Make)-相机型号(Model)-镜头制造商(LensMake)-镜头型号(LensModel)2.拍摄参数:-光圈值(ApertureValue)-快门速度(ShutterSpeedValue)-曝光时间(ExposureTime)-ISO感光度......
  • 一个有趣的问题调查,网页上的代码块全部变成 [object Object]
    问题如图,网页上的代码全部显示成了[objectObject],而且与特定网站无关,大部分网站都会有问题。调查无痕模式打开,换个浏览器打开,没有问题,看来是有插件或者油猴脚本捣乱了。调试跟踪HTML元素变更,前几次都是网站自己的js变更,后面出现了一个可疑的插件拿到插件ID之后,看......
  • Java 获取时间间隔
    使用一个函数获取两种格式的时间差一、时间格式  00:12:50二、总秒数 140//获取时间间隔publicstaticString[]getTimeInterval(StringstrStartTime,StringstrStopTime){StringarrStr[]=newString[2];try{DateFormatdf=......