微信登录
2017-07-18 18:22
92 查看
一、前期准备
1、注册微信公众平台,开通服务号(必须,订阅号没有接口调用权限)
2、注册开放平台,微信认证。认证后还需要做下面两个申请认证
1)管理中心--》创建应用(必须,审核基本一天时间)
2)帐号中心--》开发者资质认证,申请开发资质认证(必须,审核基本一天时间)
二、开发流程
微信登录开发指南
1、获取二维码链接,即开发指南中的“第一步:请求CODE”
https://open.weixin.qq.com/connect/qrconnect?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect
代码如下:其中state是自己生成的验证码
通过调用该链接会跳转二维码界面,用户扫描二维码确认后,微信后台会调用我们给定的redirect_uri,并且会有code和state参数,我们后台可以接收到code和state参数,这时可以进行指南中的“第二步:通过code获取access_token”,代码如下
接着就是获取用户信息,代码如下
到这里微信登录流程结束。
三、开发中遇到问题
1、 Scope参数错误或没有Scope权限解决方法
需要微信号开通服务号及开发这资质认证
2、redirect_uri 参数错误
将本地域名设置成与应用授权回调域一样的域名,我发生这个错误是因为本地测试时redirect_uri 链接上有端口导致的,也就是说这个链接的域名后不能有端口
这样回导致回调后报错,这时只要在地址栏中将配置的域名改成测试的域名即可(本地则为localhost:port),这样测试流程就可以走通了
1、注册微信公众平台,开通服务号(必须,订阅号没有接口调用权限)
2、注册开放平台,微信认证。认证后还需要做下面两个申请认证
1)管理中心--》创建应用(必须,审核基本一天时间)
2)帐号中心--》开发者资质认证,申请开发资质认证(必须,审核基本一天时间)
二、开发流程
微信登录开发指南
1、获取二维码链接,即开发指南中的“第一步:请求CODE”
https://open.weixin.qq.com/connect/qrconnect?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect
代码如下:其中state是自己生成的验证码
@RequestMapping(value = "/getCodeByAppIdAndScope") public void getCodeByAppIdAndScope(HttpServletResponse response) throws IOException { String redirect_uri = URLEncoder.encode(ServiceConfigUtil.getValue("redirect_uri"), "utf-8");//即下面的getAccessTokenByCode方法
String state = System.currentTimeMillis() + ""; String request_url = "https://open.weixin.qq.com/connect/qrconnect" + "?appid=" + appid + "&scope=snsapi_login" + "&redirect_uri=" + redirect_uri + "&response_type=code" + "&state=" + state + "#wechat_redirect";//URl的拼接 response.sendRedirect(request_url);//进行网络的请求}
通过调用该链接会跳转二维码界面,用户扫描二维码确认后,微信后台会调用我们给定的redirect_uri,并且会有code和state参数,我们后台可以接收到code和state参数,这时可以进行指南中的“第二步:通过code获取access_token”,代码如下
@RequestMapping(value = "/getAccessTokenByCode") public String getAccessTokenByCode(HttpServletRequest request, HttpServletResponse response, RedirectAttributes redirectAttributes, Model model) { String code = request.getParameter("code"); String accessTokenUrl = "https://api.weixin.qq.com/sns/oauth2/access_token" + "?appid=" + appid + "&secret=" + secret + "&code=" + code + "&grant_type=authorization_code";//Url的拼接 ResponseEntity result = RemoteJsonHelper.accessForEntityNoToken(HttpMethod.GET, accessTokenUrl, null);//这个是自己写的远程调用工具接口,没有的网上查查自己写一个即可 JSONObject jb = JSONObject.fromObject(result.getBody()); String accessToken = tokenObj.getString("access_token");//获取access_token getUserInfoByAccessToken(accessToken);//据accessToken获取用户信息
}
接着就是获取用户信息,代码如下
private String getUserInfoByAccessToken(JSONObject tokenObj) { String accessToken = tokenObj.getString("access_token");//获取access_token String openId =tokenObj.getString("openid");//获取openid String userUrl = "https://api.weixin.qq.com/sns/userinfo" + "?access_token=" + accessToken + "&openid=" + openId; ResponseEntity result = RemoteJsonHelper.accessForEntityNoToken(HttpMethod.GET, userUrl, null); JSONObject jb = JSONObject.fromObject(result.getBody()); String nickname = jb.getString("nickname");//普通用户昵称 String headimgurl = jb.getString("headimgurl");//用户头像,最后一个数值代表正方形头像大小(有0、46、64、96、132数值可选,0代表640*640正方形头像),用户没有头像时该项为空 String openid = jb.getString("openid");//普通用户的标识,对当前开发者帐号唯一 int sex = jb.getInt("sex");//普通用户性别,1为男性,2为女性 String province = jb.getString("province"); String city = jb.getString("city"); String country = jb.getString("country"); boolean index = 判断该用户是否授权过 if(index) {//授权过直接登录 //登录 } else { //添加处理并登录 } }
到这里微信登录流程结束。
三、开发中遇到问题
1、 Scope参数错误或没有Scope权限解决方法
需要微信号开通服务号及开发这资质认证
2、redirect_uri 参数错误
将本地域名设置成与应用授权回调域一样的域名,我发生这个错误是因为本地测试时redirect_uri 链接上有端口导致的,也就是说这个链接的域名后不能有端口
这样回导致回调后报错,这时只要在地址栏中将配置的域名改成测试的域名即可(本地则为localhost:port),这样测试流程就可以走通了
相关文章推荐
- android 微信第三方登录
- 微信网页 第三方登录原理详解(转)
- 微信小程序学习笔记--20170425--登录验证实现
- 集成友盟第三方登录(qq、微信、微信朋友圈、新浪)、分享
- 第三方应用微信登录接口
- [置顶] Android使用友盟集成QQ、微信、微博等第三方登录
- 微信开放平台 公众号第三方平台开发 教程三 一键登录授权给第三方平台
- java实现微信登录(SSM)
- 第三方App接入微信登录 解读
- ASP.NET实现QQ、微信、新浪微博OAuth2.0授权登录[原创]_实用技巧_脚本之家
- 应用接入微信登录
- springmvc项目里第三方登录(百度,QQ,微信,人人,新浪微博等)
- php 微信授权登录 40029错误
- 微信小程序学习记录二:简单的用户登录
- Android应用之——微信微博第三方sdk登录分享使用过程中的一些常见问题
- 关于使用微信登录第三方APP的实现(Android版)
- 微信授权登录
- 第三方App接入微信登录
- 继上一个坑有一个坑(微信小程序一键登录之无法识别json数据)
- Android studio 微信登录时碰到的坑