tp5微信公众号获取用户openid_微信公众号网页授权获取用户openid

该博客围绕微信公众号二次开发中获取用户openid展开。介绍了官方网页授权四步流程,阐述了作者的实现思路,包括公众号后台配置、获取code和state、根据code请求接口获取access_token和openid,还给出了相关代码段,最后表示已成功获取openid。

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

最近一个项目是在微信公众号内二次开发,涉及到微信公众号支付,根据文档要求想要支付就必须要获取到用户的openid。

官方流程

网页授权流程分为四步:

1、引导用户进入授权页面同意授权,获取code

2、通过code换取网页授权access_token(与基础支持中的access_token不同)

3、如果需要,开发者可以刷新网页授权access_token,避免过期

4、通过网页授权access_token和openid获取用户基本信息(支持UnionID机制)

我的思路

1、首先是要在公众号后台进行配置,设置回调路径,具体要求参照官方文档。

要将这里的txt文件放在项目根路径下,否则上面的回调域名是无法保存的。

 

2、用户访问第三方页面时,先去请求一个api,获取code和state

code说明 : code作为换取access_token的票据,每次用户授权带上的code将不一样,code只能使用一次,5分钟未被使用自动过期。

这里的scope分为两种:一种是静默方式(snsapi_base);一种是非静默方式(snsapi_userinfo),需要用户去手动点击同意才能获取用户的信息。

这是非静默方式授权

静默方式直接就获取到了openid

3、在1中配置的回调方法中根据获取到的code和state再去请求如下接口,获取access_token 和openid。

代码段

@SuppressWarnings("null")

@RequestMapping("/getOAuth")

public String getOAuth(){

String code = request.getParameter("code");//获取微信服务器授权返回的code值

String state = request.getParameter("state");//验证是否来自微信重定向的请求

PrintWriter pw = null;

try {

pw = response.getWriter();

if(Constant.STATE.equals(state)){

/**

* 构造请求链接

* https://api.weixin.qq.com/sns/oauth2/access_token?

* appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code

*/

String url = Constant.ACCESS_TOKEN_URL+Constant.APP_ID+"&secret="+Constant.APP_SECRET+"&code="+code+"&grant_type=authorization_code";

String jsonStr = HttpUtil.httpRequest(url);

String openid = JSONObject.parseObject(jsonStr).getString("openid");

System.out.println(openid+"==========================");

session = request.getSession();

session.setAttribute("openid", openid);

return "login/wx_login";//登录页面

}else{

response.setContentType("text/html;charset=utf-8");

pw.write("");

pw.flush();

pw.close();

}

} catch (IOException e) {

e.printStackTrace();

response.setContentType("text/html;charset=utf-8");

pw.write("");

pw.flush();

pw.close();

}

return null;

}

总结:到此就已经获取到了用户的openid,因为只涉及支付业务所用就不再往下获取用户的个人信息。感觉微信这里的官方文档逻辑还都比较清楚,照着流程走下来一般都没什么问题,具体如何获取到openid的代码可以参考我前文里的那段,已经在实际项目中实践过。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值