UDN-企业互联网技术人气社区

板块导航

浏览  : 3314
回复  : 0

[原生js] java实现 微博登录、微信登录、qq登录实现代码

[复制链接]
西北的风的头像 楼主
发表于 2017-1-17 16:59:12 | 显示全部楼层 |阅读模式
  这篇文章主要介绍了java实现 微博登录、微信登录、qq登录实现代码的相关资料,需要的朋友可以参考下

  微信,微博,QQ,这是现在目前用的最多的手机 APP,我们做产品哪能不跟他们不沾边,对于登录,我想谁也不想要多少个帐号密码,根本记不住!
  
  为了增加用户体验,用户能够快速的注册登录,第三方账号进行登录注册的的需求也就由此而诞生
2016101391424967.png   
  1、微信
  
  1) 微信登录也是最坑人的,需要花300大洋成为开发者账户,没办法谁让微信用户群体大呢所以也就只好认了;然后登录网站后台需要创建网站应用,填写授权回调域(登录网站的域名)只填写域名即可
  
  申请地址: https://open.weixin.qq.com/cgi-b ... ndex&lang=zh_CN
  
  2)查看微信提供的接口,写java代码
  1. public void wx() {
  2. try {
  3.   response.sendRedirect("https://open.weixin.qq.com/connect/qrconnect?appid="
  4.    + ShareLoginDict.WEIXINKEY.getState()
  5.    + "&redirect_uri="
  6.    + URLEncoder.encode(ShareLoginDict.WEIXINURL.getState())
  7.    + "&response_type=code&scope=snsAPI_login&state=66666#wechat_redirect");
  8. } catch (IOException e) {
  9.   // TODO Auto-generated catch block
  10.   e.printStackTrace();
  11. }
  12. }

  13. @Override
  14. public Result userwx(String return_code) {
  15. Result result = new Result();
  16. Map<String, Object> token = (Map<String, Object>) WeiXinAPI
  17.   .getToken(return_code);
  18. if (token != null && token.get("access_token") != null) {
  19.   Map<String, Object> user = (Map<String, Object>) WeiXinAPI
  20.    .getWxUser(token.get("access_token").toString(),
  21.     token.get("openid").toString());
  22.   if (user != null) {
  23.   result.addModel("openid", user.get("openid"));
  24.   result.addModel("nickname", user.get("nickname"));
  25.   result.addModel("headimgurl", user.get("headimgurl"));
  26.   result.addModel("data", "data_success");
  27.   }else{
  28.   result.addModel("data", "data_null");
  29.   }
  30. }else{
  31.   result.addModel("data", "data_null");
  32. }
  33. return result;
  34. }
复制代码

  当用户通过微信登录时,调用微信接口获取用户接口返回微信端的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代码
  1. public void qq() {
  2. try {
  3.   response.sendRedirect("https://graph.qq.com/oauth2.0/authorize?response_type=code&client_id="
  4.    + ShareLoginDict.QQKEY.getState()
  5.    + "&redirect_uri="
  6.    + ShareLoginDict.QQURL.getState() + "&scope=get_user_info");
  7. } catch (IOException e) {
  8.   // TODO Auto-generated catch block
  9.   e.printStackTrace();
  10. }
  11. }

  12. @Override
  13. public Result userqq(String return_code) {
  14. Result result = new Result();
  15. Map<String, Object> token = (Map<String, Object>) QQAPI
  16.   .getToken(return_code);
  17. if (token != null && token.get("access_token") != null) {
  18.   Map<String, Object> tokenme = (Map<String, Object>) QQAPI
  19.    .getTokenMeOpenId(token.get("access_token").toString());
  20.   if (tokenme != null && tokenme.get("openid") != null) {
  21.   Map<String, Object> user = (Map<String, Object>) QQAPI
  22.    .getQqUser(token.get("access_token").toString(),
  23.     tokenme.get("openid").toString());
  24.   if (user != null) {
  25.    result.addModel("openid", tokenme.get("openid"));
  26.    result.addModel("nickname", user.get("nickname"));
  27.    result.addModel("figureurl", user.get("figureurl"));
  28.    result.addModel("data", "data_success");
  29.   }else{
  30.    result.addModel("data", "data_null");
  31.   }
  32.   }else{
  33.   result.addModel("data", "data_null");
  34.   }

  35. }else{
  36.   result.addModel("data", "data_null");
  37. }
  38. return result;
  39. }
复制代码

  当用户通过QQ登录时,调用QQ接口获取用户接口返回QQ端的openid,昵称,头像;然后将此信息存入到浏览器的cookie中,当用户浏览其他信息时,辨别如果是用户是用微信登录的,拦截器直接从cookie中获取用户的信息显示昵称和头像,并同时判断该openid是否和数据库中用户做绑定,如果没有绑定提示用户注册。
  
  3 微博登录
  
  1)微博创建应用
  
  申请地址:http://open.weibo.com/authentication
  
  2)查看微博提供的接口,写java代码
  1. public void wb() {
  2. try {
  3.   response.sendRedirect("https://api.weibo.com/oauth2/authorize?client_id="
  4.    + ShareLoginDict.WEIBOKEY.getState()
  5.    + "&redirect_uri="
  6.    + ShareLoginDict.WEIBOURL.getState()
  7.    + "&response_type=code");
  8. } catch (IOException e) {
  9.   // TODO Auto-generated catch block
  10.   e.printStackTrace();
  11. }
  12. }

  13. @Override
  14. public Result userwb(String return_url, String return_code) {
  15. Result result = new Result();
  16. Map<String, Object> token = (Map<String, Object>) WeiBoAPI.getToken(
  17.   return_url, return_code);
  18. if (token != null && token.get("access_token") != null) {
  19.   Map<String, Object> user = (Map<String, Object>) WeiBoAPI
  20.    .getWbUser(token.get("access_token").toString(),
  21.     token.get("uid").toString());
  22.   if (user != null) {
  23.   result.addModel("name", user.get("screen_name"));
  24.   result.addModel("pic", user.get("avatar_large"));
  25.   result.addModel("idstr", user.get("idstr"));
  26.   result.addModel("data", "data_success");
  27.   }else{
  28.   result.addModel("data", "data_null");
  29.   }
  30. }else{
  31.   result.addModel("data", "data_null");
  32. }
  33. return result;
  34. }
复制代码

  当用户通过微博登录时,调用微博接口获取用户接口返回微博端的idstr,昵称,头像;然后将此信息存入到浏览器的cookie中,当用户浏览其他信息时,辨别如果是用户是用微信登录的,拦截器直接从cookie中获取用户的信息显示昵称和头像,并同时判断该openid是否和数据库中用户做绑定,如果没有绑定提示用户注册。
  
  感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

相关帖子

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们
联系我们
  • 电话:010-86393388
  • 邮件:udn@yonyou.com
  • 地址:北京市海淀区北清路68号
移动客户端下载
关注我们
  • 微信公众号:yonyouudn
  • 扫描右侧二维码关注我们
  • 专注企业互联网的技术社区
版权所有:用友网络科技股份有限公司82041 京ICP备05007539号-11 京公网网备安1101080209224 Powered by Discuz!
快速回复 返回列表 返回顶部