这个小程序的主要目的是为了用户用微信的用户信息登录后将用户信息授权存入自己的数据库中,这样以后每次微信登录得到的code 所得到的 openid 可以在项目的数据库中查到该用户的相关信息。
在测试的过程中,需要用户登录得到的code,所以会用到微信开发小工具~!
该工具的使用必须被项目授权
所生成的code是有时间限制的
微信登录端口的api如下
接口地址:
请求参数:
参数 必填 说明
appid 是 小程序唯一标识
secret 是 小程序的 app secret
js_code 是 登录时获取的 code
grant_type 是 填写为 authorization_code
返回参数:
参数 说明
openid 用户唯一标识
session_key 会话密钥
expires_in 会话有效期, 以秒为单位, 例如2592000代表会话有效期为30天
返回说明:
//正常返回的JSON数据包 { "openid": "OPENID", "session_key": "SESSIONKEY" "expires_in": 2592000 }
//错误时返回JSON数据包(示例为Code无效) { "errcode": 40029, "errmsg": "invalid code" }
所以我们可以将代码写成如下
公司将发送的报文格式自己都写好了的,我只需要写出请求路径和请求参数就ok
//@Param code 用户登录微信生成的code //@Return OAuthResult 返回包含openid和session_key和expires_in的类 public OAuthResult getOAuthResultByCode(String code) { String path = "/sns/jscode2session"; Map<String, Object> parameters = new HashMap<>(); parameters.put("appid", WechatConstant.WECHAT_APP_ID); parameters.put("secret", WechatConstant.WECHAT_APP_SECRET); parameters.put("js_code", code); parameters.put("grant_type", "authorization_code"); OAuthResult oAuthResult = messageSender.getMessageForObject(path, parameters, OAuthResult.class, false); if (oAuthResult.getOpenid() == null){ throw new BusinessException(BusinessException.Code.OAUTH_PROCESS_ERROR, "OAuth异常,原因:" + oAuthResult.getErrmsg()); } return oAuthResult; }