微信小程序> 微信小程序请求微信api授权登录Java后端-微信小程序api接口调用-微信小程序ibeacon

微信小程序请求微信api授权登录Java后端-微信小程序api接口调用-微信小程序ibeacon

浏览量:1900 时间: 来源:Neymar.JR
1.

1.小程序端调用wx.login(),获取到微信返回的code临时凭证.2.小程序端调用我方的后台接口,Java后端调用微信的api,需要appId,appSecret,js_code,grant_type:authorization_code代码如下:

privateJSONObjectgetUserWXLoginInfo(StringwxCode){StringrequestUrl"https://api.weixin.qq.com/sns/jscode2session";MapString,StringrequestUrlParamnewHashMapString,String();requestUrlParam.put("appid",GameConstants.AppID);//开发者设置中的appIdrequestUrlParam.put("secret",GameConstants.AppSecret);//开发者设置中的appSecretrequestUrlParam.put("js_code",wxCode);//小程序调用wx.login返回的coderequestUrlParam.put("grant_type","authorization_code");//默认参数//发送post请求读取调用微信https://api.weixin.qq.com/sns/jscode2session接口获取openid用户唯一标识JSONObjectjsonObjectJSON.parseObject(UrlUtil.sendPost(requestUrl,requestUrlParam));returnjsonObject;}publicStringlogin(StringwxCode)throwsParseException{//请求微信api获取用户的openid和sessionKeyJSONObjectjsonObjectgetUserWXLoginInfo(wxCode);if(jsonObject!null!jsonObject.containsKey("openid")){returnCommon.getErrorReturn(GameMsg.CANSHU_ERROR);}Stringopenid(String)jsonObject.get("openid");StringsessionKey(String)jsonObject.get("session_key");//通过openid查询数据库是否有此用户ListUseruserListgetUserByOpenId(openid);if(userList!nulluserList.size()!0){//用户已存在if(userList.get(0).getPhone()null){jsonObject.put("phone","");}else{jsonObject.put("phone",userList.get(0).getPhone());}RedisSetter.setRedisStringDuration(openid,sessionKey,60*60);//存到redis中,设置失效时间jsonObject.put("userId",userList.get(0).getUserId());jsonObject.put("dateTime",DatetimeUtil.dateToStamp(newDate()));returnCommon.getReturn(jsonObject);}UserusernewUser();user.setOpenid(openid);userDao.insertUser(user);ListUsernewUsergetUserByOpenId(openid);if(newUser.get(0).getPhone()null){jsonObject.put("phone","");}else{jsonObject.put("phone",newUser.get(0).getPhone());}RedisSetter.setRedisStringDuration(openid,sessionKey,60*60);//存到redis中,设置失效时间jsonObject.put("userId",newUser.get(0).getUserId());jsonObject.put("dateTime",DatetimeUtil.dateToStamp(newDate()));returnCommon.getReturn(jsonObject);}http请求的工具类:packagecom.king.util;importjava.io.BufferedReader;importjava.io.IOException;importjava.io.InputStreamReader;importjava.io.PrintWriter;importjava.net.URL;importjava.net.URLConnection;importjava.util.Iterator;importjava.util.Map;importorg.apache.log4j.LogManager;importorg.apache.log4j.Logger;publicclassUrlUtil{privatefinalLoggerLOGLogManager.getLogger(this.getClass());/***向指定URL发送POST方法的请求**@paramurl发送请求的URL*@paramparam请求参数*@return所代表远程资源的响应结果*/publicstaticStringsendPost(Stringurl,MapString,?paramMap){PrintWriteroutnull;BufferedReaderinnull;Stringresult"";Stringparam"";IteratorStringitparamMap.keySet().iterator();while(it.hasNext()){Stringkeyit.next();param+key+""+paramMap.get(key)+"";}try{URLrealUrlnewURL(url);//打开和URL之间的连接URLConnectionconnrealUrl.openConnection();//设置通用的请求属性conn.setRequestProperty("accept","*/*");conn.setRequestProperty("connection","Keep-Alive");conn.setRequestProperty("Accept-Charset","utf-8");conn.setRequestProperty("user-agent","Mozilla/4.0(compatible;MSIE6.0;WindowsNT5.1;SV1)");//发送POST请求必须设置如下两行conn.setDoOutput(true);conn.setDoInput(true);//获取URLConnection对象对应的输出流outnewPrintWriter(conn.getOutputStream());//发送请求参数out.print(param);//flush输出流的缓冲out.flush();//定义BufferedReader输入流来读取URL的响应innewBufferedReader(newInputStreamReader(conn.getInputStream(),"UTF-8"));Stringline;while((linein.readLine())!null){result+line;}}catch(Exceptione){e.printStackTrace();}//使用finally块来关闭输出流、输入流finally{try{if(out!null){out.close();}if(in!null){in.close();}}catch(IOExceptionex){ex.printStackTrace();}}returnresult;}}2.

返回给小程序所需要的参数即可

3.

原文:https://blog.csdn.net/CRR_0312/article/details/88756807

版权声明

即速应用倡导尊重与保护知识产权。如发现本站文章存在版权问题,烦请提供版权疑问、身份证明、版权证明、联系方式等发邮件至197452366@qq.com ,我们将及时处理。本站文章仅作分享交流用途,作者观点不等同于即速应用观点。用户与作者的任何交易与本站无关,请知悉。

产品经理

手机 : 13312967497

擅长 : 小程序流量变现

扫码领取礼包

最新资讯

热门模板

  • 头条
  • 搜狐
  • 微博
  • 百家
  • 一点资讯
  • 知乎