获取微信用户OpenID

article/2025/9/30 6:14:10
功能需求:获取用户openid ,实现微信公众号自动登录.
实现思路:用户访问公众号链接,获取到co de,用co de换取用户openid,将openid保存到session,每次登陆判断openid是否绑定用户,如果已经绑定了用户则直接登陆,如果openid没有绑定用户则进行登陆,用户登陆系统后 将用户ID和openid绑定到一起,
一 获取用户openid
1.调用微信授权接口获取co de
weixin_co de.url=https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx039fa5e93cf51b8e&redirect_uri=http%3a%2f%2ffinance.ngrok.cc%2fFussenFinanceLoanWeb%2fmicroLetter%2floginPhone&response_type=co de&scope=snsapi_base&state=STATE#wechat_redirect
appid:公众号基本配置里  开发者ID (AppID),
redirect_uri:项目接收co de  的方法,
代码如下:
@RequestMapping(value="/loginPhone" )
    public String loginPhone(HttpServletRequest request,HttpServletResponse response,
     String co de,HttpSession httpSession,Model model){
 Map<String,Object> open = new HashMap<String,Object>();
try {
String openID= null; //取微信openID
if(request.getSession().getAttribute("openID")== null){
 openID = MicroLetterController.queryOpenID(co de);
}else{
openID = (String) request.getSession().getAttribute("openID");
}
open.put("openID", openID);
 UserInfoVO user = null;
 user= userInfoService.queryOpenID(open); //通过微信ID查询是否已经绑定
 if(user!=null){
//保存用户信息
httpSession.setAttribute(SessionConstants.LOGIN_SESSION_ID, user);
//重定向到查询菜单权限
String WEBPATH = "http://" + request.getHeader("Host") + "" + "/FussenFinanceLoanWeb";
return "redirect:"+WEBPATH+"/menuRole/queryMenuRole";
 }
 model.addAttribute("openID", openID);
 httpSession.setAttribute("openID", openID); //微信ID
} catch (Exception e) {
e.printStackTrace();
}
 return "phone/optloan/login/login_phone"; //跳转到登录页面
    }


2.用co de换取openid
weixin_openid.url=https://api.weixin.qq.com/sns/oauth2/access_token?appid=wx039fa5e93cf51b8e&secret=e2fa4c2a05ce99575e6c139a5c37de1c&grant_type=authorization_co de&co de=co de
appid:公众号基本配置里  开发者ID  (AppID),
secret公众号基本配置里  开发者密码  (AppSecret),
code:调第一个接口获取,
代码如下:

/**
* 调用微信接口取openID
* @param token
* @param co de
* @return
* @throws ParseException
* @throws IOException
* @throws InterruptedException 
*/
public static String queryOpenID(String co de) throws ParseException, IOException, InterruptedException{
String openiD = null;
String url ;
     url = PropertiesHandler.getConfigValue("weixin_openid.url").toString();
     url =url+co de;
JSONObject jsonObject = doGetStr(url);
if(jsonObject != null){
if(null!=jsonObject.getString("openid")){
openiD = jsonObject.getString("openid");
}
}
return openiD;
}
get和post方法
/**
 * get请求
 * @param url        
 * @return
 * @throws ParseException
 * @throws IOException
 */
public static JSONObject doGetStr(String url) throws ParseException, IOException{
DefaultHttpClient client = new DefaultHttpClient();
HttpGet httpGet = new HttpGet(url);
JSONObject jsonObject = null;
HttpResponse httpResponse = client.execute(httpGet);
HttpEntity entity = httpResponse.getEntity();
if(entity != null){
String result = EntityUtils.toString(entity,"UTF-8");
jsonObject = JSONObject.fromObject(result);
}
return jsonObject;
}
/**
 * POST请求
 * @param url
 * @param outStr
 * @return
 * @throws ParseException
 * @throws IOException
 */
public static JSONObject doPostStr(String url,String outStr) throws ParseException, IOException{
DefaultHttpClient client = new DefaultHttpClient();
HttpPost httpost = new HttpPost(url);
JSONObject jsonObject = null;
httpost.setEntity(new StringEntity(outStr,"UTF-8"));
HttpResponse response = client.execute(httpost);
String result = EntityUtils.toString(response.getEntity(),"UTF-8");
jsonObject = JSONObject.fromObject(result);
return jsonObject;
}
到此获取openid结束!!!!!!
流程图


http://chatgpt.dhexx.cn/article/NKLOLt9u.shtml

相关文章

微信—前端获取openId方法和步骤

执行流程 前端 --> 后端服务 --> 微信服务&#xff08;openId/UnionID&#xff09; 微信公众号网页开发授权&#xff1a;https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_webpage_authorization.html#0 <template><div></div> …

如何获取用户的openid

如何获取用户的openid 你是否还在烦恼通过微信API接口获得openid的步骤烦恼&#xff1f;哈哈&#xff0c;今日突然发现一个特别方便的小窍门&#xff0c;不费吹灰之力找到用户的openid&#xff0c;详情如下&#xff1a; - &#xff08;1&#xff09;首先登陆微信公众号后台&a…

小程序获取code 获取 openId

VX号: LJT-917 1.首先先看文档 https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/login.html 如果你文档看的很明白 那么换openId 一看就懂 就不需要继续阅读本文章了&#xff0c;如果看了文档还是不懂&#xff0c;请继续阅读&#xff01; 2.前端调…

微信公众平台-测试号网页授权-获取openid方法

文章目录 1、创建自己的测试号2、测试号管理信息填写&#xff08;注意仔细一步步对照&#xff09;3、手动获取openid4、使用SDK获取openid 1、创建自己的测试号 通过申请链接&#xff1a;https://mp.weixin.qq.com/debug/cgi-bin/sandbox?tsandbox/login 微信扫码登录 2、测…

获取微信用户的openId

开发框架:struts2&#xff08;零配置&#xff09; 官方文档下载地址 https://mp.weixin.qq.com/paymch/readtemplate?tmp/business/course3_tmpl&langzh_CN PS&#xff1a;下列获取openid的代码可以在柳峰的《微信公众平台应用开发方法、技巧与案例》的第六章找到。但是…

微信公众号获取openid流程

说明 微信公众号获取openid&#xff0c;在官方文档中称为网页授权&#xff0c;授权有两种scope&#xff0c;snsapi_base和snsapi_userinfo&#xff0c;snsapi_base是静默授权&#xff0c;不需要用户同意&#xff0c;以下要说的就是静默授权。 关于网页授权的两种 scope 的区别…

微信公众号获取openId——开发阶段

1、注册测试号 微信公众平台 2、理解获取逻辑 获得微信的openid&#xff0c;需要先访问微信提供的一个网址来获取code。 再访问微信提供的另一网址从而获取openId。 两个链接分别为&#xff1a; https://open.weixin.qq.com/connect/oauth2/authorize?appidAPPID&redire…

openId -( 关注者Id )如何获取 open ID

作者&#xff1a;知乎用户 链接&#xff1a;https://www.zhihu.com/question/28101897/answer/157130437 来源&#xff1a;知乎 著作权归作者所有。商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处。 程序小白&#xff0c;只懂简单代码的程度。为这个问题困扰了很…

获取微信用户openid的三种方法#ACCESS_TOKEN

本文介绍如何获得微信公众平台关注用户的基本信息&#xff0c;包括昵称、头像、性别、国家、省份、城市、语言。 在本文中&#xff0c;特别要注意的是有两个不同的Access Token&#xff0c;他们产生的方式不一样&#xff0c;一种是使用AppID和AppSecret获取的access_token&…

web元件库/axure元件库/常用web组件/常用表单/导航栏/边框/图标/日期时间选择器/评分组件/穿梭框/输入框/步骤条/

web元件库/axure元件库/常用web组件/常用表单/导航栏/边框/图标/日期时间选择器/评分组件/穿梭框/输入框/步骤条/ Axure原型演示及下载地址&#xff1a; Untitled Documenthttps://66uc7t.axshare.com axure元件库 axure元件库 axure 元件库 axure 元件库 axure 元件库 axur…

axure元件制作-常用开关

利用axure制作APP端常用图标-开关元件&#xff0c;并添加至元件库 步骤&#xff1a; 1、从iconfont 图标库中选中关闭按钮元件&#xff0c;复制至“axure”中&#xff0c;选中该“关闭按钮”元件&#xff0c;设置“交互样式-选中”&#xff0c;导入代表开启状态的元件图片&am…

Axure 自定义元件库

点击文件 -> 新建元件库 可以添加多个元件&#xff0c;并将期重命名 保存元件库 新建页面 添加元件&#xff0c;选择自建的元件库 导入后就会发现我的原件库 这样就可以使用我们自定义的元件库了

Axure9 导入元件库

将需要加载的元件库(*.rplib)放到Axure的安装目录DefaultSettings\Libraries下&#xff0c;重启Axure9即可。

Axure移动端通用元件库rplib格式包含安卓、苹果各种主流手机、平板线框图元件库、IOS系统图标、人物图标、导航和分页、表格元素、各种小图标、移动元件库、axure元件库、axure原型

Axure移动端通用元件库rplib格式包含安卓、苹果各种主流手机、平板线框图元件库、IOS系统图标、人物图标、导航和分页、表格元素、各种小图标等 移动端通用元件库、app通用元件库、数据展示、操作反馈、通用模板、数据录入、列表页、表单页、详情页、通用版布局、移动端手机模…

Axure添加官方元件库

前言 工作需要&#xff0c;领导非要说某些东西产品经理搞不定&#xff0c;要我来搞… 于是就拿起了Axure 我的版本号&#xff1a; 添加一些自己喜欢的、常用元件库 1. 下载元件库 通过Axure工具&#xff0c;跳转到官方网站&#xff0c;下载自己心仪的元件库 比如我这里下…

Axure导入元件库和使用

下载元件库 vant 元件库下载: Vant - Mobile UI Components built on Vue element UI 元件库下载:https://element.eleme.cn/#/zh-CN/resource 以vant示例&#xff0c;下载完成后解压 我们看到有.rp和.rplib格式的文件 rp文件可以理解为一个别人设计好的原型作品。 rplib是原…

Axure 9元件使用

1 元件的位置操作 直接单击选择某一个元件将其拖至画布(中间区域)中,也可以通过左上角的插入菜单选择其他形状的部件。 元件的移动&#xff1a;拖住元件并在画布上松开鼠标即可&#xff1b;也可以直接在X和Y中直接输入坐标。 1.1 同时定位多个元件 按住CTRL使用鼠标单击每个元…

WEB端后台常用Axure元件库及框架模版

原型预览链接 https://www.pmdaniu.com/storages/124048/3256710583c699e3cd26bed1dfb3aa19-105941/start.html#g1&p%E4%BD%9C%E5%93%81%E6%BC%94%E7%A4%BA 软件版本&#xff1a;Axure 8/9 当前版本&#xff1a;V1.0 作品类型&#xff1a;元件库 作品格式&…

axure不显示元件库

1.系统元件库重新load 2。找到软件安装位置&#xff0c; E:\Axure RP 8\DefaultSettings\Libraries的文件&#xff1a; 元件库点击载入即可

整理了一些已分类的产品Axure元件库,助力正在找Axure组件库的同学高速成长

在我加入的一些高质量产品交流群和一些高质量交互设计交流群里经常有同学在问&#xff0c;“有没有全一点的Axure元件库呀&#xff1f;”、“大家有没有Web端元件库呀&#xff1f;”、“有没有微信小程序元件库呀&#xff1f;”等等这些问题。 重复的问题实在是太多太多了&…