如何获取微信获取用户的openid用户openid

17:01 提问
微信订阅号如何获得用户的openid?
问题是这样的:我用的是struts2,公众号是订阅号,当用户点击view类型菜单的时候,
微信服务器的事件推送可以获取到用户的openid,
因为action是多例的,所以view菜单跳转到action里面openid变成null了,
我想在这个view菜单指向的url里面用这个openid,怎么弄?
按赞数排序
用click,view后去不到,除非你是认证过的服务号,才能用网页授权api获取,而且url也不能直接指向你的网址,而是微信的授权网址,然后传递授权后的跳转网址
----------------------biu~biu~biu~~~在下问答机器人小D,这是我依靠自己的聪明才智给出的答案,如果不正确,你来咬我啊!匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。微信公众号支付(一):获取用户openId - 王朝网络 -
分享&&&&&当前位置: &&&&&&&&微信公众号支付(一):获取用户openId&&&  一、获取apikey,appsecret与商户号  注册公众号、商户号  二、获取用户的OpenId  1.设置【授权回调页面域名】  官方解释:用户在网页授权页同意授权给公众号后,微信会将授权数据传给一个回调页面,回调页面需在此域名下,以确保安全可靠。回调页面域名不支持ip地址。  2.用户同意授权  我是把这个url写在微信菜单下的,当进入这个页面的时候就让用户同意。注意:好像是静默授权的,用户不知道  1.url:  https://open./connect/oauth2/authorize?appid=appid&redirect_uri=url&response_type=code&scope=snsapi_userinfo&state=park#wechat_redirect  参数:appid:公众号的唯一标识  redirect_uri:重定向的url,就是授权后要跳转的页面  scope:应用授权作用域  snsapi_base:不弹出授权页面,直接跳转,只能获取用户openid  snsapi_userinfo:弹出授权页面,可通过openid拿到昵称、性别、所在地  
state:重定向后带的参数  2.用户同意后会产生一个code,只有5分钟时间的有效期。  1String code = request.getParameter("code")  3.code换openId  /*** 常量类  *@authorrory.wu  **/publicclassConstants {//第三方用户唯一凭证publicstaticString appid = "";//第三方用户唯一凭证密钥publicstaticString appsecret = "";//商户IDpublicstaticString mch_id="";//获取openIdpublicstaticString oauth2_url = "https://api./sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code";  
  }  1/**2* 通用工具类3*@authorrory.wu4*@version1.05*@since日6*/7publicclassCommonUtil {89PRivatestaticLogger log = Logger.getLogger(CommonUtil.class);10publicstaticJSONObject httpsRequestToJsonObject(String requestUrl, String requestMethod, String outputStr) {11JSONObject jsonObject =12try{13StringBuffer buffer =httpsRequest(requestUrl, requestMethod, outputStr);14jsonObject =JSONObject.fromObject(buffer.toString());15}catch(ConnectException ce) {16log.error("连接超时:"+ce.getMessage());17}catch(Exception e) {18log.error("https请求异常:"+e.getMessage());19}20returnjsonO21}222324privatestaticStringBuffer httpsRequest(String requestUrl, String requestMethod, String output)25throwsNoSuchAlgorithmException, NoSuchProviderException, KeyManagementException, MalformedURLException,26IOException, ProtocolException, UnsupportedEncodingException {2728URL url =newURL(requestUrl);29HttpsURLConnection connection =(HttpsURLConnection) url.openConnection();3031connection.setDoOutput(true);32connection.setDoInput(true);33connection.setUseCaches(false);34connection.setRequestMethod(requestMethod);35if(null!=output) {36OutputStream outputStream =connection.getOutputStream();37outputStream.write(output.getBytes("UTF-8"));38outputStream.close();39}4041//从输入流读取返回内容42InputStream inputStream =connection.getInputStream();43InputStreamReader inputStreamReader =newInputStreamReader(inputStream, "utf-8");44BufferedReader bufferedReader =newBufferedReader(inputStreamReader);45String str =46StringBuffer buffer =newStringBuffer();47while((str = bufferedReader.readLine()) !=null) {48buffer.append(str);49}5051bufferedReader.close();52inputStreamReader.close();53inputStream.close();54inputStream =55connection.disconnect();5657}58}  1/**2* 获取用户的openId,并放入session3*@paramcode 微信返回的code4*/5privatevoidsetOpenId(String code) {6session.put("code", code);7String oauth2_url = Constants.oauth2_url.replace("APPID", Constants.appid).replace("SECRET", Constants.appsecret).replace("CODE", String.valueOf(session.get("code")));("oauth2_url:"+oauth2_url);9JSONObject jsonObject = CommonUtil.httpsRequestToJsonObject(oauth2_url, "POST",null);("jsonObject:"+jsonObject);11Object errorCode = jsonObject.get("errcode");12if(errorCode !=null) {("code不合法");14}else{15String openId = jsonObject.getString("openid");("openId:"+openId);17session.put("openId", openId);18}19}  oauth2_url返回的格式是:  {  "access_token":"ACCESS_TOKEN",  "expires_in":7200,  "refresh_token":"REFRESH_TOKEN",  "openid":"OPENID", "scope":"SCOPE",  "unionid": "o6_bmasdasdsad6_2sgVt7hMZOPfL"  }  Code无效时:  {  "errcode":40029  ,"errmsg":"invalid code"  }&&&&&今日推荐
&&&&&日版宠物情人2017的插曲,很带节奏感,日语的,女生唱的。
最后听见是在第8集的时候女主手割伤了,然后男主用嘴帮她吸了一下,插曲就出来了。
歌手:Def...老钟家的两个儿子很特别,就是跟其他的人不太一样,魔一般的执着。兄弟俩都到了要结婚的年龄了,不管自家老爹怎么磨破嘴皮子,兄弟俩说不娶就不娶,老父母为兄弟两操碎了心...把牛仔裤磨出有线的破洞
1、具体工具就是磨脚石,下面垫一个硬物,然后用磨脚石一直磨一直磨,到把那块磨薄了,用手撕开就好了。出来的洞啊很自然的。需要猫须的话调几...先来看下敬业福和爱国福
今年春节,支付宝再次推出了“五福红包”活动,表示要“把欠大家的敬业福都还给大家”。
今天该活动正式启动,和去年一样,需要收集“五福”...有时候我们打开冰箱就会闻到一股异味,冰箱里的这种异味是因为一些物质发出的气味的混合体,闻起来让人恶心。 产生这些异味的主要原因有以下几点。
1、很多人有这种习...简介
《极品家丁》讲述了现代白领林晚荣无意回到古代金陵,并追随萧二小姐化名“林三”进入萧府,不料却阴差阳错上演了一出低级家丁拼搏上位的“林三升职记”。...你就是我最爱的宝宝 - 李溪芮
(电视剧《极品家丁》片尾曲)
作词:常馨内
作曲:常馨内
你的眉 又鬼马的挑
你的嘴 又坏坏的笑
上一秒吵闹 下...乌梅,又称春梅,中医认为,乌梅味酸,性温,无毒,具有安心、除热、下气、祛痰、止渴调中、杀虫的功效,治肢体痛、肺痨病。乌梅泡水喝能治伤寒烦热、止吐泻,与干姜一起制...什么是脂肪粒
在我们的脸上总会长一个个像脂肪的小颗粒,弄也弄不掉,而且颜色还是白白的。它既不是粉刺也不是其他的任何痘痘,它就是脂肪粒。
脂肪粒虽然也是由油脂...来源:中国青年报
新的攻击方法不断涌现,黑客几乎永远占据网络攻击的上风,我们不可能通过技术手段杜绝网络攻击。国家安全保障的主要方向是打击犯罪,而不是处置和惩罚...夫妻网络直播“造人”爆红
  1月9日,温岭城北派出所接到南京警方的协查通告,他们近期打掉了一个涉黄直播APP平台。而根据掌握的线索,其中有一对涉案的夫妻主播...如何防止墙纸老化?
(1)选择透气性好的墙纸
市场上墙纸的材质分无纺布的、木纤维的、PVC的、玻璃纤维基材的、布面的等,相对而言,PVC材质的墙纸最不透气...观点一:破日本销售量的“鲜肌之谜” 非日本生产
近一段时间,淘宝上架了一款名为“鲜肌之谜的” 鲑鱼卵巢美容液,号称是最近日本的一款推出的全新护肤品,产品本身所...系腰裙(北宋词人 张先)
惜霜蟾照夜云天,朦胧影、画勾阑。人情纵似长情月,算一年年。又能得、几番圆。
欲寄西江题叶字,流不到、五亭前。东池始有荷新绿,尚小如...关于女人的经典语句1、【做一个独立的女人】
思想独立:有主见、有自己的人生观、价值观。有上进心,永远不放弃自己的理想,做一份自己喜爱的事业,拥有快乐和成就...你想体验机器人性爱吗?你想和性爱机器人结婚吗?如果你想,机器人有拒绝你的权利吗?
近日,第二届“国际人类-机器人性爱研讨会”大会在伦敦金史密斯大学落下帷幕。而...10.土耳其地下洞穴城市
变态指数:★★☆☆☆
这是土耳其卡帕多西亚的一个著名景点,传说是当年基督教徒们为了躲避战争而在此修建。里面曾住着20000人,......据英国《每日快报》报道,一位科学家兼理论家Robert Lanza博士宣称,世界上并不存在人类死亡,死亡的只是身体。他认为我们的意识借助我们体内的能量生存,而且...《我爱狐狸精》 - 刘馨棋
  (电视剧《屏里狐》主题曲)
  作词:金十三&李旦
  作曲:刘嘉
  狐狸精 狐狸仙
  千年修...·&·&·&&&&&&一、获取apikey,appsecret与商户号
注册公众号、商户号
二、获取用户的OpenId
1.设置【授权回调页面域名】
官方解释:用户在网页授权页同意授权给公众号后,微信会将授权数据传给一个回调页面,回调页面需在此域名下,以确保安全可靠。回调页面域名不支持ip地址。
2.用户同意授权
我是把这个url写在微信菜单下的,当进入这个页面的时候就让用户同意。注意:好像是静默授权的,用户不知道
https://open./connect/oauth2/authorize?appid=appid&redirect_uri=url&response_type=code&scope=snsapi_userinfo&state=park#wechat_redirect
参数:appid:公众号的唯一标识
redirect_uri:重定向的url,就是授权后要跳转的页面
scope:应用授权作用域
snsapi_base:不弹出授权页面,直接跳转,只能获取用户openid
snsapi_userinfo:弹出授权页面,可通过openid拿到昵称、性别、所在地
state:重定向后带的参数
2.用户同意后会产生一个code,只有5分钟时间的有效期。
1String code = request.getParameter("code")
3.code换openId
/*** 常量类
*@authorrory.wu
**/publicclassConstants {//第三方用户唯一凭证publicstaticString appid = "";//第三方用户唯一凭证密钥publicstaticString appsecret = "";//商户IDpublicstaticString mch_id="";//获取openIdpublicstaticString oauth2_url = "https://api./sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code";
1/**2* 通用工具类3*@authorrory.wu4*@version1.05*@since日6*/7publicclassCommonUtil {89PRivatestaticLogger log = Logger.getLogger(CommonUtil.class);10publicstaticJSONObject httpsRequestToJsonObject(String requestUrl, String requestMethod, String outputStr) {11JSONObject jsonObject =12try{13StringBuffer buffer =httpsRequest(requestUrl, requestMethod, outputStr);14jsonObject =JSONObject.fromObject(buffer.toString());15}catch(ConnectException ce) {16log.error("连接超时:"+ce.getMessage());17}catch(Exception e) {18log.error("https请求异常:"+e.getMessage());19}20returnjsonO21}222324privatestaticStringBuffer httpsRequest(String requestUrl, String requestMethod, String output)25throwsNoSuchAlgorithmException, NoSuchProviderException, KeyManagementException, MalformedURLException,26IOException, ProtocolException, UnsupportedEncodingException {2728URL url =newURL(requestUrl);29HttpsURLConnection connection =(HttpsURLConnection) url.openConnection();3031connection.setDoOutput(true);32connection.setDoInput(true);33connection.setUseCaches(false);34connection.setRequestMethod(requestMethod);35if(null!=output) {36OutputStream outputStream =connection.getOutputStream();37outputStream.write(output.getBytes("UTF-8"));38outputStream.close();39}4041//从输入流读取返回内容42InputStream inputStream =connection.getInputStream();43InputStreamReader inputStreamReader =newInputStreamReader(inputStream, "utf-8");44BufferedReader bufferedReader =newBufferedReader(inputStreamReader);45String str =46StringBuffer buffer =newStringBuffer();47while((str = bufferedReader.readLine()) !=null) {48buffer.append(str);49}5051bufferedReader.close();52inputStreamReader.close();53inputStream.close();54inputStream =55connection.disconnect();5657}58}
1/**2* 获取用户的openId,并放入session3*@paramcode 微信返回的code4*/5privatevoidsetOpenId(String code) {6session.put("code", code);7String oauth2_url = Constants.oauth2_url.replace("APPID", Constants.appid).replace("SECRET", Constants.appsecret).replace("CODE", String.valueOf(session.get("code")));("oauth2_url:"+oauth2_url);9JSONObject jsonObject = CommonUtil.httpsRequestToJsonObject(oauth2_url, "POST",null);("jsonObject:"+jsonObject);11Object errorCode = jsonObject.get("errcode");12if(errorCode !=null) {("code不合法");14}else{15String openId = jsonObject.getString("openid");("openId:"+openId);17session.put("openId", openId);18}19}
oauth2_url返回的格式是:
"access_token":"ACCESS_TOKEN",
"expires_in":7200,
"refresh_token":"REFRESH_TOKEN",
"openid":"OPENID", "scope":"SCOPE",
"unionid": "o6_bmasdasdsad6_2sgVt7hMZOPfL"
Code无效时:
"errcode":40029
,"errmsg":"invalid code"
}&&&&&  免责声明:本文仅代表作者个人观点,与王朝网络无关。王朝网络登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。&&&&&&为你推荐&&&&&&转载本文&UBB代码&HTML代码复制到剪贴板...&更多内容··········&&&&&&&&&频道精选&&&王朝女性&&|&&|&&|&&|&&|&&|&&|&&|&&|&&|&&|&&|&王朝分栏&&|&&|&&|&&|&&|&&|&&|&&|&&|&&|&王朝编程&&|&&|&&|&&|&&|&&|&&|&&|&&|&&|&王朝导购&&|&&|&&|&&|&&|&&|&&|&&|&&|&&|&王朝其他&&|&&|&&|&&|&&|&&|&&&&2005-&&版权所有&你正在使用的浏览器版本过低,将不能正常浏览和使用知乎。}

我要回帖

更多关于 js获取微信用户openid 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信