微博登录、微信登录、qq登录java技术实现

为了增加用户体验,用户能够快速的注册登录,第三方账号进行登录注册的的需求也就由此而诞生

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

时间: 2024-08-05 03:51:02

微博登录、微信登录、qq登录java技术实现的相关文章

React Native 接入微博、微信、QQ 登录功能

在 App 开发中我们经常需要在用户登录模块接入 SNS 登录组件,这样会大大提高用户的注册体验.特别当一个不是刚性需求 App 推广的时候,这样会很大的降低用户体验的成本,没有人愿意忍受输入邮箱.手机号码去注册一个账号的流程.本文主要分享了在 React Native 中接入微博.微信.QQ 登录的流程,以及此前登录组件中修复的一个已知 bug 的修复. 使用中有任何问题欢迎留言交流.讨论.http://blog.1ygowu.com ReactNative技术交流 QQ群127482131

Android——分享文本给微博、微信、qq、邮箱、我的电脑等等手机上所安装的能够通信的软件

我们有时候需要将文本.图片等分享到微博.微信.qq好友等,网上有好多代码,实现复杂,对于初学者来说,读起来很困难,其实,分享这一功能是很容易实现的.实现代码如下(经过了测试): 1.分享文本: Intent intent = new Intent(Intent.ACTION_SEND); //启动分享发送的属性     intent.setType("text/plain");//分享发送的数据类型为文本   intent.putExtra(Intent.EXTRA_SUBJECT,

Android端不通过登录SDK实现QQ登录验证

通常的APP如果要调用QQ登录验证,需要使用QQ提供的登录SDK,但是QQ的SDK使用需要申请APP KEY和APPID,还要向腾讯提交比较繁琐的其它申请,而且如果通过该方法,登录信息全部被QQ掌握.那么是否有方法可以不申请DIY使用QQ登录验证呢. 看了几个QQ移动产品,并未使用这种方式APP KEY的方式进行验证登录,大致确定QQ的产品并没有使用这种接口,而是使用自有的方法直接登录.于是找了一款产品分析了一下. 首先确认了,登录的功能是由oicq这个包来负责的. 接下来分析它的调用接口,通过

试用友盟SDK实现Android第三方登录(以QQ登录为例)

虽然自己在日常工作中用不到第三方登录,但是它的重要性无可厚非. 废话不多说,接下来跟着步骤走,轻松集成第三方登陆. 一,在友盟注册应用 注册好友盟账户后,在http://www.umeng.com/social 中注册自己的应用 拿到友盟Appkey(记得先创建项目,在注册时package别弄错了...) 二,在腾讯开放平台中注册开发者信息,并注册应用 链接:http://open.qq.com/ 进入后点击移动应用 提交个人(公司)资料注册开发者信息(需要审核等待),通过后再创建移动应用(这里

java 制作QQ登录界面

package org.eclipse.wb.swing; import java.awt.BorderLayout;import java.awt.EventQueue; import javax.swing.ImageIcon;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.border.EmptyBorder;import javax.swing

QQ登录类

2015-3-31 22:02:09 1. 首先是库文件, 登录->授权->token->openid->获取用户信息 1 class QQ 2 { 3 public $appid = ''; 4 public $appkey = ''; 5 public $scope = 'get_user_info'; //权限用逗号隔开 6 public $callback = ''; 7 8 public $get_auth_code_url = 'https://graph.qq.com

Moodle的qq登录版块的使用

在这篇Moodle的qq登录版块的使用教程中,我们假定你已经有了一个有域名,外网能访问的Moodle2.4+网站,并且数据库使用的是mysql. 我们将提供Moodle的QQ登录版块的下载地址,以及这个版块的安装使用方法. 本系列教程将引导你完成如下任务: 申请QQ互联的appid 在Moodle上安装QQ登录版块 QQ登录版块中填入appid 第一章 申请QQ互联应用appid 创建QQ互联应用 QQ账号登陆 QQ账号登陆,首先需要在qq互联上进行申请,申请地址:http://connect.

如何通过第三方QQ登录网站首页

QQ登录,就是我们所说的第三方登录,是指用户可以不在本项目中输入密码,而直接通过第三方的验证,成功登录本项目 若想实现QQ登录,需要成为QQ互联的开发者,审核通过才可实现.注册方法参考链接http://wiki.connect.qq.com/%E6%88%90%E4%B8%BA%E5%BC%80%E5%8F%91%E8%80%85 成为QQ互联开发者后,还需创建应用,即获取本项目对应与QQ互联的应用ID,最重要的是拿到APPID,创建应用的方法参考链接http://wiki.connect.qq

微信、QQ和手机号之间不得不说的故事!

发文字,发图片,发心情,视频聊天,查看附近的人,微信能干的事情QQ都可以,那么它们有什么区别,我QQ用得好好的为什么要我联系人都导到微信去?我们很早就有了QQ,但是在QQ时代,我们虽然用QQ发消息聊天,但我们该用短信的时候还得用短信,该打电话的时候还得打,没听说过运营商害怕QQ什么的,但是为什么它们现在却是一致感觉要么自己革命,要么被微信革命的感觉?有人说如果用微信联系,我给你发微信消息你不在线怎么办,还不是只有短信可靠?我不用摇一摇,微信对我还有什么意思?等等等等...        类似上面