微信获取openid和网页授权

本文介绍了如何在Java项目中实现微信获取openid的步骤。首先引入weixin-java-mp依赖,然后通过构造网页授权接口生成重定向URL,用户授权后获取code,再使用code换取OAuth2AccessToken,从而得到openid。在实际操作中,前端需要配置项目地址,手机访问需设置http代理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

获取openid 
1.引入依赖weixin-java-mp
2.构造网页授权
 @GetMapping("/authorize")
    public String authorize(@RequestParam("returnUrl") String returnUrl) {
        //1. 配置WxMpService
        //2. 调用方法
        String url = projectUrlConfig.getWechatMpAuthorize() + "/sell/wechat/userInfo";
        String redirectUrl = wxMpService.oauth2buildAuthorizationUrl(url, WxConsts.OAUTH2_SCOPE_BASE, URLEncoder.encode(returnUrl));
        return "redirect:" + redirectUrl;
    }

 

    @GetMapping("/userInfo")
    public String userInfo(@RequestParam("code") String code,
                         @RequestParam("state") String returnUrl) {
        WxMpOAuth2AccessToken wxMpOAuth2AccessToken = new WxMpOAuth2AccessToken();
        try {
            wxMpOAuth2AccessToken = wxMpService.oauth2getAccessToken(code);
        } catch (WxErrorException e) {
            log.error("【微信网页授权】{}", e);
            throw new SellException(ResultEnum.WECHAT_MP_ERROR.getCode(), e.getError().getErrorMsg());
        }
  //拿到openid
        String openId = wxMpOAuth2AccessToken.getOpenId();

        return "redirect:" + returnUrl + "?openid=" + openId;
    }
微信网页授权
访问项目的时候会重定向到wechat/authorize(在前端项目中需要配置项目地址...sell.com和获取openid的地址...wechat/authorize)
成功的话会提示请在微信客户端打开链接
电脑可以直接访问sell.com(有相应配置host,域名直接指向了虚拟机)
手机要访问sell.com的话,要在手机上配置http代理,填写电脑的ip(在无线局域网中),端口8888

### 获取微信用户OpenID的方法 为了获取微信用户的 OpenID,开发者可以根据具体的应用场景选择不同的方法。以下是几种常见的实现方式: #### 方法一:通过网页授权接口获取OpenID 当应用需要获取用户的 OpenID 并且希望获得更详细的用户信息时,可以采用网页授权的方式[^3]。 1. **引导用户进入授权页面** 用户访问公众号链接时会被重定向至如下地址: `https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect` 2. **服务器端处理回调请求并换取OpenID** 当用户同意授权后,会跳转回设定好的回调URL,并携带上`code`参数。此时可以在服务端使用此`code`来调用微信提供的OAuth 2.0 接口以交换得到access_token以及对应的OpenID。 请求示例(POST): ```http https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code ``` #### 方法二:小程序环境下直接获取OpenID 对于基于微信小程序的应用程序来说,则可以直接利用登录能力快速取得用户的OpenIDSession Key[^4]。 ```javascript wx.login({ success (res) { if (res.code) { // 发起网络请求 wx.request({ url: 'https://example.com/login', // 开发者自建的服务端API data: { code: res.code, appid: APPID, secret: SECRET }, method:'GET', success(res){ console.log('openid:', res.data.openid); } }) } else { console.log('登录失败!' + res.errMsg) } } }) ``` 以上两种方案分别适用于不同类型的项目需求,在实际操作过程中可根据具体情况灵活选用合适的技术路径完成相应功能开发。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值