轻源码

  • QingYuanMa.com
  • 全球最大的互联网技术和资源下载平台
搜索
一起源码网 门户 终极进阶 查看主题

nyoj_lvy实战开发系列《二》: 微信端开发:登录小程序

发布者: 漫步者 | 发布时间: 2017-2-22 09:09| 查看数: 5887| 评论数: 1|帖子模式

这个小程序的主要目的是为了用户用微信的用户信息登录后将用户信息授权存入自己的数据库中,这样以后每次微信登录得到的code 所得到的 openid 可以在项目的数据库中查到该用户的相关信息。

测试的过程中,需要用户登录得到的code,所以会用到微信开发小工具~! 

该工具的使用必须被项目授权

所生成的code是有时间限制的

微信登录端口的api如下

接口地址:

请求参数: 
参数 必填 说明 
appid 是 小程序唯一标识 
secret 是 小程序的 app secret 
js_code 是 登录时获取的 code 
grant_type 是 填写为 authorization_code

返回参数: 
参数 说明 
openid 用户唯一标识 
session_key 会话密钥 
expires_in 会话有效期, 以秒为单位, 例如2592000代表会话有效期为30天

返回说明:

  1. //正常返回的JSON数据包
  2. {
  3. "openid": "OPENID",
  4. "session_key": "SESSIONKEY"
  5. "expires_in": 2592000
  6. }
  7. //错误时返回JSON数据包(示例为Code无效)
  8. {
  9. "errcode": 40029,
  10. "errmsg": "invalid code"
  11. }

所以我们可以将代码写成如下

公司将发送的报文格式自己都写好了的,我只需要写出请求路径和请求参数就ok

  1. //@Param code 用户登录微信生成的code
  2. //@Return OAuthResult 返回包含openidsession_keyexpires_in的类
  3. public OAuthResult getOAuthResultByCode(String code) {
  4. String path = "/sns/jscode2session";
  5. Map<String, Object> parameters = new HashMap<>();
  6. parameters.put("appid", WechatConstant.WECHAT_APP_ID);
  7. parameters.put("secret", WechatConstant.WECHAT_APP_SECRET);
  8. parameters.put("js_code", code);
  9. parameters.put("grant_type", "authorization_code");
  10. OAuthResult oAuthResult = messageSender.getMessageForObject(path, parameters, OAuthResult.class, false);
  11. if (oAuthResult.getOpenid() == null){
  12. throw new BusinessException(BusinessException.Code.OAUTH_PROCESS_ERROR, "OAuth异常,原因:" + oAuthResult.getErrmsg());
  13. }
  14. return oAuthResult;
  15. }

最新评论

xuxianqianga 发表于 2022-4-26 13:11
源代码乐芙兰

轻源码让程序更轻更快

QingYuanMa.com

工作时间 周一至周六 8:00-17:30

侵权处理

客服QQ点击咨询

关注抖音号

定期抽VIP

Copyright © 2016-2021 https://www.171739.xyz/ 滇ICP备13200218号

快速回复 返回顶部 返回列表