微信,微博,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 token = (Map) WeiXinAPI

.getToken(return_code);

if (token != null && token.get("access_token") != null) {

Map user = (Map) 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 token = (Map) QQAPI

.getToken(return_code);

if (token != null && token.get("access_token") != null) {

Map tokenme = (Map) QQAPI

.getTokenMeOpenId(token.get("access_token").toString());

if (tokenme != null && tokenme.get("openid") != null) {

Map user = (Map) 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 token = (Map) WeiBoAPI.getToken(

return_url, return_code);

if (token != null && token.get("access_token") != null) {

Map user = (Map) 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是否和数据库中用户做绑定,如果没有绑定提示用户注册。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

java 微信 qq 登录_java实现 微博登录、微信登录、qq登录实现代码相关推荐

  1. H5手机移动端调起浏览器自带分享功能实例(QQ、UC浏览器微博、微信分享)

    H5手机移动端调起浏览器自带分享功能实例(QQ.UC浏览器微博.微信分享) 注:代码需要在服务器或测试服务器上方可看到效果 HTML: <span class="viewshare w ...

  2. H5手机页面调起浏览器自带分享功能实例(QQ、UC浏览器微博、微信分享)

    H5手机页面调起浏览器自带分享功能实例(QQ.UC浏览器微博.微信分享) HTML: <span class="viewshare wx" data-mshare=" ...

  3. 通过js sdk 来进行第三方登录及授权(微博,微信,qq)

    微博第三方登录及授权 注册申请appkey 1.打开微博开发者平台http://open.weibo.com/development 2.点击创建微链接 3.选择类型(选择网站接入) 4.填写各项信息 ...

  4. java检测用户是否重复登录_Java web工程判断用户是否重复登录

    前几天,网上找了些朋友的资料,做了一个小功能,验证用户是否重复登录. 原理就是:每一个用户,登录前有一个验证,当第一次登录时,会把其session信息,添加到一个特定的静态变量中.当第二次登录时,验证 ...

  5. java模拟网易邮箱登录_java实现163邮箱发送邮件到qq邮箱成功案例

    下载和上传附件.发送短信和发送邮件,都算是程序中很常用的功能,之前记录了文件的上传和下载还有发送短信,由于最近比较忙,邮件发送的功能就没有时间去弄,现在终于成功以163邮箱发送邮件到qq邮箱,以下是相 ...

  6. java.sql 拒绝连接_java.sql.SQLException: ORA-01017: 用户名/口令无效; 登录被拒绝

    java.sql.SQLException: ORA-01017: 用户名/口令无效; 登录被拒绝 at oracle.jdbc.dbaccess.DBError.throwSqlException( ...

  7. java web网站实例_Java Web开发: 基于HttpServlet的用户登录网站 实例

    2013-02-04 20:50 814人阅读 评论(0) 一个简单的小例子,基于httpservlet的用户登录(杂家是菜鸟刚接触javaee,只能从最简单出发了),首先看业务逻辑: 有三个文件组成 ...

  8. java发送邮件到qq邮箱_Java利用javax.mail发送邮件至QQ邮箱

    javax.mail去哪里下载就不要说了吧.以下是利用javax.mail发送邮件的代码.public static void sendMail(String fromMail,String user ...

  9. java微信红包开发_java写的伪微信红包功能示例代码

    性能优化点: 1.使用int不使用double.(单位用分不用元)也省去了还要用math.round四舍五入,把double类型数据只留小数点后前两位. 2.random() 方法用于返回一个随机数, ...

最新文章

  1. 网络推广是做什么的介绍网站内容更新时需要遵循哪些原则?
  2. 视图解析自定义视图和自定义视图解析器——未完待续
  3. shell 脚本执行 sql
  4. 临床观察性研究论文如何撰写“方法”?
  5. Springboot搭建个人博客系列
  6. android纵向列表菜单栏实现,RecyclerView实现常见的列表菜单
  7. 循环机换变速箱油教程_变速箱油用循环机换还是重力换更好?一次讲清楚,新手司机学学...
  8. 谷歌Auto-DeepLab:自动搜索图像语义分割架构算法开源实现
  9. ORACLE存储过程中计算某天所在周的周一和周日的方法
  10. 面向对象 VS 面向过程
  11. 分布式架构下的“负载均衡”
  12. 3D建模设计软件Rhino 7 for Mac
  13. Java基础---Java---IO流-----对象的序列化、管道流、RandomAccessFile、数据类型的流对象DataStream、ByteArrayStream
  14. hdoj2045:LELE的RPG难题(递推)
  15. UE4 虚幻引擎,SourceControl源码管理
  16. Shopee菲律宾站如何选品?听Shopee Man本土多店管理系统告诉你
  17. Spring Security 与 OAuth2(资源服务器)
  18. 土建中级工程师考试用书电子版_对没错!2020年湖南土建中级职称考试教材只是指导用书...
  19. SolidWorks2010
  20. 手机通话记录重复显示怎么处理_苹果8手机通话记录合并 苹果合并重复通话记录...

热门文章

  1. Orangepi 香橙派 安装 Debian 系统 并且 安装 wxpy (微信机器人) 入坑记录
  2. android 多个fragment切换,一个Activity中多个Fragment的切换
  3. 启用计算机时出现了,Win7由于启动计算机时出现了页面文件配置问题怎么解决...
  4. CF144D Missile Silos 解题报告 *
  5. 项目经理角色定位-PMP圣经
  6. 3D建模师会因为年龄大而失业吗?真实行业揭秘
  7. 电信手机流量数据分析
  8. 有限幂零群、可解群的判定算法
  9. 三大浏览器兼容性问题总结
  10. WhatsApp-跨境电商必争之地