微信,微博,qq,这是现在目前用的最多的手机 app,我们做产品哪能不跟他们不沾边,对于登录,我想谁也不想要多少个帐号密码,根本记不住!
为了增加用户体验,用户能够快速的注册登录,第三方账号进行登录注册的的需求也就由此而诞生
1、微信
1) 微信登录也是最坑人的,需要花300大洋成为开发者账户,没办法谁让微信用户群体大呢所以也就只好认了;然后登录网站后台需要创建网站应用,填写授权回调域(登录网站的域名)只填写域名即可
申请地址: https://open.weixin.qq.com/cgi-bin/index?t=home/index&lang=zh_cn
2)查看微信提供的接口,写java代码
public void wx() { try { response.sendredirect("https://open.weixin.qq.com/connect/qrconnect?appid=" + sharelogindict.weixinkey.getstate() + "&redirect_uri=" + urlencoder.encode(sharelogindict.weixinurl.getstate()) + "&response_type=code&scope=snsapi_login&state=66666#wechat_redirect"); } catch (ioexception e) { // todo auto-generated catch block e.printstacktrace(); } } @override public result userwx(string return_code) { result result = new result(); map<string, object> token = (map<string, object>) weixinapi .gettoken(return_code); if (token != null && token.get("access_token") != null) { map<string, object> user = (map<string, object>) weixinapi .getwxuser(token.get("access_token").tostring(), token.get("openid").tostring()); if (user != null) { result.addmodel("openid", user.get("openid")); result.addmodel("nickname", user.get("nickname")); result.addmodel("headimgurl", user.get("headimgurl")); result.addmodel("data", "data_success"); }else{ result.addmodel("data", "data_null"); } }else{ result.addmodel("data", "data_null"); } return result; }
当用户通过微信登录时,调用微信接口获取用户接口返回微信端的openid,昵称,头像;然后将此信息存入到浏览器的cookie中,当用户浏览其他信息时,辨别如果是用户是用微信登录的,拦截器直接从cookie中获取用户的信息显示昵称和头像,并同时判断该openid是否和数据库中用户做绑定,如果没有绑定提示用户注册。
2、qq登录
1)qq互联创建应用
接入qq登录前,网站需首先进行申请,获得对应的appid与appkey,以保证后续流程中可正确对网站与用户进行验证与授权。
申请appid和appkey的用途
appid :应用的唯一标识。在oauth2.0认证过程中,appid的值即为oauth_consumer_key的值。
appkey:appid对应的密钥,访问用户资源时用来验证应用的合法性。在oauth2.0认证过程中,appkey的值即为oauth_consumer_secret的值。
申请地址: http://connect.qq.com/intro/login/
2)查看qq提供的接口,写java代码
public void qq() { try { response.sendredirect("https://graph.qq.com/oauth2.0/authorize?response_type=code&client_id=" + sharelogindict.qqkey.getstate() + "&redirect_uri=" + sharelogindict.qqurl.getstate() + "&scope=get_user_info"); } catch (ioexception e) { // todo auto-generated catch block e.printstacktrace(); } } @override public result userqq(string return_code) { result result = new result(); map<string, object> token = (map<string, object>) qqapi .gettoken(return_code); if (token != null && token.get("access_token") != null) { map<string, object> tokenme = (map<string, object>) qqapi .gettokenmeopenid(token.get("access_token").tostring()); if (tokenme != null && tokenme.get("openid") != null) { map<string, object> user = (map<string, object>) qqapi .getqquser(token.get("access_token").tostring(), tokenme.get("openid").tostring()); if (user != null) { result.addmodel("openid", tokenme.get("openid")); result.addmodel("nickname", user.get("nickname")); result.addmodel("figureurl", user.get("figureurl")); result.addmodel("data", "data_success"); }else{ result.addmodel("data", "data_null"); } }else{ result.addmodel("data", "data_null"); } }else{ result.addmodel("data", "data_null"); } return result; }
当用户通过qq登录时,调用qq接口获取用户接口返回qq端的openid,昵称,头像;然后将此信息存入到浏览器的cookie中,当用户浏览其他信息时,辨别如果是用户是用微信登录的,拦截器直接从cookie中获取用户的信息显示昵称和头像,并同时判断该openid是否和数据库中用户做绑定,如果没有绑定提示用户注册。
3 微博登录
1)微博创建应用
申请地址:http://open.weibo.com/authentication
2)查看微博提供的接口,写java代码
public void wb() { try { response.sendredirect("https://api.weibo.com/oauth2/authorize?client_id=" + sharelogindict.weibokey.getstate() + "&redirect_uri=" + sharelogindict.weibourl.getstate() + "&response_type=code"); } catch (ioexception e) { // todo auto-generated catch block e.printstacktrace(); } } @override public result userwb(string return_url, string return_code) { result result = new result(); map<string, object> token = (map<string, object>) weiboapi.gettoken( return_url, return_code); if (token != null && token.get("access_token") != null) { map<string, object> user = (map<string, object>) weiboapi .getwbuser(token.get("access_token").tostring(), token.get("uid").tostring()); if (user != null) { result.addmodel("name", user.get("screen_name")); result.addmodel("pic", user.get("avatar_large")); result.addmodel("idstr", user.get("idstr")); result.addmodel("data", "data_success"); }else{ result.addmodel("data", "data_null"); } }else{ result.addmodel("data", "data_null"); } return result; }
当用户通过微博登录时,调用微博接口获取用户接口返回微博端的idstr,昵称,头像;然后将此信息存入到浏览器的cookie中,当用户浏览其他信息时,辨别如果是用户是用微信登录的,拦截器直接从cookie中获取用户的信息显示昵称和头像,并同时判断该openid是否和数据库中用户做绑定,如果没有绑定提示用户注册。
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
如对本文有疑问, 点击进行留言回复!!
《UnityAPI.Collision碰撞》(Yanlz+Unity+SteamVR+云技术+5G+AI+VR云游戏+Collision+collider+rigidbody+立钻哥哥++OK++)
荐 2020年Java面试上必问的26个高频关键知识点,刷三遍必进阿里腾讯大厂!就这么自信!
使用IDEA搭建Springboot项目(dao层使用Mybatis)
网友评论