java中微信、qq、微博第三方方式登录

1、微信
1) 申请地址: 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是否和数据库中用户做绑定,如果没有绑定提示用户注册。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值