微信公众号--根据用户opneId获取用户信息

这篇具有很好参考价值的文章主要介绍了微信公众号--根据用户opneId获取用户信息。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、登录微信公众号的测试环境,找到“网页授权获取用户基本信息”点击修改,添加上自己的回调地址域名。测试时可以写IP:端口号,正式环境只支持域名不要写http://或https://。

根据openid获取用户信息,服务器,运维

 二、步骤:

根据openid获取用户信息,服务器,运维

 1、用户同意授权,获取code:

      参考链接:

https://open.weixin.qq.com/connect/oauth2/authorize?appid=wxf0e81c3bee622d60&redirect_uri=http%3A%2F%2Fnba.bluewebgame.com%2Foauth_response.php&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect
  • scope的参数有2种:一种是snsapi_base权限只能获取OpenId而且不会弹出授权页面,另为一种是snsapi_userinfo权限会弹出授权页面并且会获取用户信息。
  • redirect_url:是回调地址,当请求成功的时候会重定向到回调页面,并返回code和state。回调地址必须是设置的回调地址域名下且需要进行urlEncode处理。
    如:http://xxxx.xxxx.cn/test/wechat/redirect?code=CODE&state=1

 2、通过code获取access_token:

       参考链接:

https://api.weixin.qq.com/sns/oauth2/access_token?appid="+appid+"&secret="+appSecret+"&code="+code+"&grant_type=authorization_code

 3、通过access_token获取用户信息:

       参考链接:

https://api.weixin.qq.com/sns/userinfo?access_token="+access_token+"&openid="+openId+"&lang=en

三、代码

1、通过消息模板推送授权链接:

/**
     * 推送给新关注的用户授权
     * @param openId 用户的openId
     */
    public static void followMessage(String openId) {
        try {
            // 发送消息的时间
            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            String dateFormat = simpleDateFormat.format(new Date());
            // 获取AccessToken的值
            String accessToken = WaChatServiceUtil.getAccessToken();
            String url = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" + accessToken;
            // 获取消息模版id
            String Message = MessageTemplateEnum.FOLLOW_MESSAGE_TEMPLATE.getKey();
            // 回调地址,需要用urlEncode对链接进行处理,微信公众号中需要将授权回调页面域名配置好回调地址需要在回调页面域名下
            String callbackUrl = "http%3A%2F%2F"+DOMAINNAME+"%2Fsampling-merchant-web%2Fherman%2Ftest%2Fwechat%2Fredirect.cgi";
            // appId
            String appId = WaChatServiceUtil.getAPPID();
            // 授权地址,用户点击后将进行授权,返回给回调地址code值,state为任意a-zA-Z0-9的参数值,最多128字节
            String empowerUrl = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" + appId + "&redirect_uri=" + callbackUrl + "&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect";

            // 设置模版消息的内容
            WeChatTemplate wc = new WeChatTemplate();
            wc.setTouser(openId);
            wc.setTemplate_id(Message);
            wc.setUrl(empowerUrl);
            Map<String, TemplateData> m = new HashMap<>();
            m.put("first", new TemplateData("欢迎关注mamain,点击下方进行授权", "#000000"));
            m.put("time", new TemplateData(dateFormat, "#000000"));
            m.put("url", new TemplateData("点击进行授权,获取您的微信名。", "#173177"));
            m.put("remark", new TemplateData("有疑问请联系客服!", "#FF0000"));
            wc.setData(m);
            //post发送授权消息模版
            String rString = WeChatUtils.sendPost(url, JSON.toJSONString(wc));
            logger.info("发送授权模版消息结果为:{}", rString);
        } catch (Exception e) {
            logger.error("发送授权模版消息失败!", e);
        }
    }

2、获取用户信息文章来源地址https://www.toymoban.com/news/detail-599416.html

/**
     * 回调:微信授权,获取用户code
     */
    @RequestMapping(value = "wechat/redirect", method = RequestMethod.GET,produces = "text/html; charset=UTF-8")
    @ResponseBody
    public String wechatRedirect(HttpServletRequest request) throws IOException {
        try {
            // 获取用户code
            String code = request.getParameter("code");
            if (null==code){
                logger.error("code为空!");
                return "error:code为空,授权失败";
            }
            logger.info("code为{}",code);
            // 获取 access_token
            String appid= WaChatServiceUtil.getAPPID();
            String appSecret=WaChatServiceUtil.getAPPSECRET();
            String getToken="https://api.weixin.qq.com/sns/oauth2/access_token?appid="+appid+"&secret="+appSecret+"&code="+code+"&grant_type=authorization_code";
            JSONObject token = JSONObject.parseObject(WeChatUtils.sendGet(getToken));
            Object access_token=token.get("access_token");
            String openId= (String) token.get("openid");
            logger.info("access_token:{},openid{}",access_token,openId);
            // 获取用户信息
            String getUser="https://api.weixin.qq.com/sns/userinfo?access_token="+access_token+"&openid="+openId+"&lang=zh_CN";
            JSONObject user = JSONObject.parseObject(WeChatUtils.sendGet(getUser));
            String wechatName= (String) user.get("nickname");
            logger.info("用户名为:{},openid为:{}",wechatName,openId);
        }catch (Exception e){
            logger.error("获取用户信息异常!", e);
        }
        return "<h1 align=\"center\">您已授权成功</h1>";
    }

到了这里,关于微信公众号--根据用户opneId获取用户信息的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 关于微信小程序如何调用wx.login获取openId和用户信息

    首先我们需要在微信开发小工具获取code临时登录凭证,下面是js文件也就是一些需要调用的函数。需要做这个的话我们需要上微信公众平台获取AppId和AppSecret 这个是页面 这是获取到的code 本来获取用户信息是getUserInfo但是微信官方已经把那个接口废弃了,只能获取到一些默认

    2024年02月11日
    浏览(51)
  • Java后台实现网站微信扫码登录功能,获取用户openid,及微信用户信息(小程序码方案),关联微信小程序(个人主体小程序也可以)

    目录 前言 下面展示操作流程 注册微信小程序 通过后台获取小程序码 前端处理 时序图理解 方案实现步骤 前言 很多业务场景之下我们需要实现  微信扫码登录  的需求,如: 同步网站与小程序的用户数据 。 需要获取用户微信相关基本信息,如头像、id等 实例:小程序上的

    2024年02月02日
    浏览(55)
  • 微信小程序与公众号关联(同一主体),获取unionId并关联公众号openid

    有一些同学在实际开发中,会有通过微信的openid获取公众号的openid,或者其他内容,这几天正好在研究这个功能的实现(已实现),现做思路上的简单分享,希望能对需要解决该问题的同学有所帮助,有误之处敬请指正。 工具/语言/依赖 版本 备注 uniapp 2023-12 Springboot 2.1.12.

    2024年04月14日
    浏览(34)
  • uni-app 获取用户的openID和基本信息

    在微信公众平台, https://mp.weixin.qq.com/ ,找到小程序的id和密钥 (1)uni.login:获取用户的登录凭证。 https://uniapp.dcloud.io/api/plugins/login?id=login (2)uni.request:发送网络请求,通过登录凭证获取用户的openID。 https://uniapp.dcloud.io/api/request/request?id=request (3)请求接口说明 https:/

    2023年04月08日
    浏览(52)
  • 【微信小程序】通过云函数获取用户openid

    1.pages同级目录下新建新文件夹,命名为cloudFunctions(其他名字也可以)。 2.project.config.json中添加以下内容,值为上一步创建的文件夹名字。编译一次后上一步创建的文件夹前图标就带“云”了。 3.app.js内的App中添加 1.右击cloudFunctions文件夹,点击【新建Node.js云函数】,命名为

    2024年02月10日
    浏览(57)
  • 通过java方式获取微信用户openId

    https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_webpage_authorization.html 目的:使本地的服务能在微信客户端进行访问 1.购买隧道 https://natapp.cn/tunnel/buy 2.进行配置 配置域名,ip和端口。在这里配本地可以访问的服务的ip和端口。 3 下载客户端 3 打开命令行在客户端同级目录执

    2024年02月11日
    浏览(44)
  • 微信小程序获取用户的openid以及授权登录拿到用户头像及姓名

    在微信小程序中,往往需要将用户信息录入自己的数据库中,就得有一个唯一标记区分用户,这个标记就是openid。 我这里用云函数的方式,比较简单 先创建一个名为getOPenid的云函数  在云函数中获取微信调用上下文cloud.getWXContext  可选择性的返回openid、appid、unionid等,可详细查

    2024年02月12日
    浏览(57)
  • 微信小程序登录获取用户唯一标识OpenId,(SpringBoot项目)

    微信小程序的登录,需要获取到用户的唯一标识OpenId,这里只涉及到后端代码,所以前提是前端申请了一个小程序并且有了appid和secret。 文章目录 一、微信小程序登录流程 二、代码实现 1.引入相关依赖 2.代码实现 实际项目经验分享 先上官方开发文档连接 小程序登录 | 微信

    2024年02月12日
    浏览(52)
  • 公众号和小程序获取用户信息及获取手机号

    公众号的获取用户信息 前端传code,后端根据code获取用户信息 代码: 小程序获取用户信息 前端传iv,encryptedData,code,然后后端根据code获取session_key,再利用session_key,encryptedData及iv来获取用户信息 注意:前端wx.login获取code和获取用户信息的顺序 代码:(用的easyWeChat) 小程

    2024年02月11日
    浏览(53)
  • 获取微信小程序用户的code、openid、session_key

    1、安装微信开发者工具: 在你的电脑上安装微信小程序的开发者工具。你可以从微信开放平台官网下载并安装适用于你的操作系统的开发者工具。 2、注册微信开放平台账号: 如果你还没有微信开放平台账号,需要注册一个。你可以在微信开放平台注册页面进行注册。 3、创

    2024年02月03日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包