`
wangjie2013
  • 浏览: 173809 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
阅读更多

    last modified:2013-10-11 14:24:11

    *********************************************

 

之前已经介绍过一篇新浪微博登录的文章,这里再介绍一下腾讯微博登录,其实两者的流程都是一样的,但有一些细微的差别。具体流程和新浪微博一样,首先需要在腾讯微博开放平台(http://dev.t.qq.com/)申请的App KeyApp secret

我使用的是腾讯提供的javaSDK进行开发,更多语言的SDK可以到这里下载

/**
	 * 腾讯微博登录初始化.
	 * 
	 * @param OAuth
	 *            version 2 认证参数实体类
	 * */
	private void init(OAuthV2 oAuth) {
		//你申请到的app key
		oAuth.setClientId(client_ID_TENCENT);
		//你申请到的 app secret
		oAuth.setClientSecret(client_SERCRET_TENCENT);
//授权成功后的回调URL,以上根据你的实际情况填写,建议使用配置文件的方式在类初始化的时候读取。
		oAuth.setRedirectUri(redirect_URI_TENCENT);
	}
	/*
	获得授权URL,当然你也可以自己拼接字符串,格式为:
https://open.t.qq.com/cgi-bin/oauth2/authorize?client_id=client_ID_TENCENT&response_type=code&redirect_uri=redirect_URI_TENCENT

*/
    @RequestMapping(value = "/tencentWeibo")
	@ResponseBody
	public String tencentWeibo() {
		OAuthV2 oAuth = new OAuthV2();
		init(oAuth);

		QHttpClient qHttpClient = null;
		String authorizationUrl = null;
		try {
			qHttpClient = new QHttpClient(2, 2, 5000, 5000, null, null);
			OAuthV2Client.setQHttpClient(qHttpClient);
			authorizationUrl = OAuthV2Client.generateAuthorizationURL(oAuth);
		} finally {
			if (qHttpClient != null)
				qHttpClient.shutdownConnection();
		}
		return authorizationUrl;
	}
/**
	 * 腾讯微博登录回调uri.
	 * @param request
	 * @param code
	 * @param openid
	 * @param openkey
	 * @param state
	 * @param response
	 * @return view url
	 */
	@RequestMapping(value = "/loginByTencentWeibo")
	public void loginByTencentWeibo(
@RequestParam(value = "code") String code,
		@RequestParam(value = "openid") String openid,
  @RequestParam(value = "openkey") String openkey,
	   @RequestParam(value = "state") String state) {

		OAuthV2 oAuth = new OAuthV2();
		init(oAuth);
		oAuth.setOpenid(openid);
		oAuth.setOpenkey(openkey);
		oAuth.setAuthorizeCode(code);

		// 换取access token
		oAuth.setGrantType("authorization_code");
		QHttpClient qHttpClient = null;
		try {
			qHttpClient = new QHttpClient(2, 2, 5000, 5000, null, null);
			OAuthV2Client.setQHttpClient(qHttpClient);
			// 使用Authorization code方式鉴权时,用授权码换取Access Token
			OAuthV2Client.accessToken(oAuth);
		} catch (Exception e1) {
			e1.printStackTrace();
		} finally {
			//记住关掉连接
			if (qHttpClient != null)
				qHttpClient.shutdownConnection();
		}

		UserAPI userAPI = new UserAPI(oAuth.getOauthVersion());
		String format = "json";
		String infoByJson = "";
		try {
			infoByJson = userAPI.info(oAuth, format);
		} catch (Exception e) {
			log.debug("腾讯微博返回的用户数据解析出错,json: {}", "".equals(infoByJson) ? "为空" : infoByJson);
			e.printStackTrace();
		} finally {
			//记住关掉连接
			if (userAPI!= null)
				userAPI.shutdownConnection();
		}

		log.debug("infoByJson: {}", infoByJson);
		net.sf.json.JSONObject tempJson = (net.sf.json.JSONObject) net.sf.json.JSONObject.fromObject(infoByJson);
		net.sf.json.JSONObject weiboUser = tempJson.getJSONObject("data");
		/*
好了,这样我们就获取到了登录用户在腾讯微博的相关信息weiboUser
		  下面我们来获取一些信息:
       */
		String avatarLarge = weiboUser.getString("head") + "/120";//获得最大头像
		String screenName = weiboUser.getString("nick");//获取昵称
		String uid = weiboUser.getString("name");//获取微博id
		// do any more… …
		// … … 
}

 

下面是从腾讯获取到的json字段说明:

{
	errcode : 返回错误码,
	msg : 错误信息,
	ret : 返回值,0-成功,非0-失败,
	data : 
	{
		birth_day : 出生天,
		birth_month : 出生月,
		birth_year : 出生年,
		city_code : 城市id,
		comp : 
		{
			begin_year : 开始年,
			company_name : 公司名称,
			department_name : 部门名称,
			end_year : 结束年,
			id : 公司id
		},
		country_code : 国家id,
		edu : 教育信息
		{
			departmentid : 院系id,
			id : 教育信息记录id,
			level : 学历级别,
			schoolid : 学校id,
			year : 入学年
		},
		fansnum : 听众数,
		favnum : 收藏数,
		head : 头像url,
		homecity_code : 家乡所在城市id,
		homecountry_code : 家乡所在国家id,
		homepage : 个人主页,
		homeprovince_code : 家乡所在省id,
		hometown_code : 家乡所在城镇id,
		idolnum : 收听的人数,
		industry_code : 行业id,
		introduction : 个人介绍,
		isent : 是否企业机构,
		ismyblack : 是否在当前用户的黑名单中,0-不是,1-是,
		ismyfans : 是否是当前用户的听众,0-不是,1-是,
		ismyidol : 是否是当前用户的偶像,0-不是,1-是,
		isrealname : 是否实名认证,1-已实名认证,2-未实名认证,
		isvip : 是否认证用户,0-不是,1-是,
		location : 所在地,
		mutual_fans_num : 互听好友数,
		name : 用户帐户名,
		nick : 用户昵称,
		openid : 用户唯一id,与name相对应,
		province_code : 地区id,
		regtime : 注册时间,
		send_private_flag : 是否允许所有人给当前用户发私信,0-仅有偶像,1-名人+听众,2-所有人,
		sex : 用户性别,1-男,2-女,0-未填写,
		tag : 标签
		{
			id : 个人标签id,
			name : 标签名
		},
		tweetinfo : 最近的一条原创微博信息
		{
			city_code : 城市码,
			country_code : 国家码,
			emotiontype : 心情类型,
			emotionurl : 心情图片url,
			from : 来源,
			fromurl : 来源url,
			geo : 地理位置信息,
			id : 微博唯一id,
			image : 图片url列表,
			latitude : 纬度,
			location : 发表者所在地,
			longitude : 经度,
			music : 音频信息
			{
				author : 演唱者,
				url : 音频地址,
				title : 音频名字,歌名
			},
			origtext : 原始内容,
			province_code : 省份码,
			self : 是否自已发的的微博,0-不是,1-是,
			status : 微博状态,0-正常,1-系统删除,2-审核中,3-用户删除,4-根删除,
			text : 微博内容,
			timestamp : 服务器时间戳,不能用于翻页,
			type : 微博类型,1-原创发表,2-转载,3-私信,4-回复,5-空回,6-提及,7-评论,
			video : 视频信息
			{
				picurl : 缩略图,
				player : 播放器地址,
				realurl : 视频原地址,
				shorturl : 视频的短url,
				title : 视频标题
			}
		},
		tweetnum : 发表的微博数,
		verifyinfo : 认证信息,
		exp : 经验值,
		level : 微博等级
	},
	seqid : 序列号
}

 

注意:在进行腾讯微博开发时,获取到的json数据可能会有乱码,导致解析json数据时出错,虽然腾讯表示使用的是UTF8,但是改为UTF8编码后出现的情况是大部分json数据中的中文数据都是正确的,但还是是有几个字符是乱码。

如果你也遇到这样的乱码问题你可以下载我打包的jar,里面包括了腾讯微博开发用到的必须类和一些乱码优化。

 

10
1
分享到:
评论
2 楼 dianthus 2013-10-12  
谢谢分享。
1 楼 zyengogo 2013-10-12  
[flash=200,200][url][img][list]
[*]
引用
[u][i][b][/b][/i][/u]
[/list][/img][/url][/flash]

相关推荐

    在自己的网站添加腾讯微博登陆

    本教程将详细介绍如何在自己的网站上添加腾讯微博登录功能,并实现分享到微博的功能。 首先,我们需要了解腾讯微博开放平台的基本概念。腾讯微博开放平台为开发者提供了API接口,允许第三方应用与微博进行数据交互...

    腾讯微博登陆包

    腾讯微博登陆包是一款基于Java平台的SDK,专为开发者提供接入腾讯微博服务的功能。这个SDK使得开发者能够轻松地在自己的应用程序中集成微博登录、分享、互动等社交媒体功能,从而提升用户体验,扩大应用的社交影响力...

    最新版腾讯微博模拟登陆 亲测可用

    首先,标题"最新版腾讯微博模拟登陆 亲测可用"表明我们要实现的功能是针对腾讯微博的模拟登录,并且这个方法已经被验证可以成功运行。在模拟登录的过程中,通常需要复现用户在浏览器上的操作,包括填写用户名、密码...

    腾讯微博开放平台

    在移动开发领域,腾讯微博开放平台为开发者提供了一个强大的工具,允许他们集成微博功能到自己的Android应用程序中。这个平台提供了丰富的API,使得开发者可以轻松实现用户登录、微博发布、信息获取等一系列操作。...

    腾讯微博登陆源码

    腾讯微博POST登陆源码。新腾讯网页登录MD5算法,JS调用。

    android腾讯微博分享demo

    在Android应用开发中,与社交平台的集成是一个常见的需求,比如腾讯微博的分享功能。"android腾讯微博分享demo"是一个示例项目,旨在帮助开发者理解并实现如何在Android应用中集成腾讯微博的分享功能。这个Demo经过...

    分享到新浪,腾讯微博

    【标题】:“分享到新浪,腾讯微博” 在互联网社交领域,分享内容到新浪和腾讯微博是一种常见的交流方式。这两个平台都是中国领先的社交媒体平台,让用户能够实时发布信息、观点和生活点滴,同时也支持与朋友们互动...

    腾讯微博 开放平台 PHP SDK2.1.2.zip

    腾讯微博开放平台PHP SDK2.1.2是一个用于与腾讯微博接口交互的开发工具包,主要服务于PHP开发者,便于他们在自己的应用中集成腾讯微博的功能。本文将深入解析这个SDK的关键知识点,包括其基本架构、主要功能、使用...

    腾讯微博 iWeibo v2.0 SP1.zip

    iWeibo系统是基于腾讯微博开放平台API开发的一套免费微博系统,拥有腾讯微博的全部功能,且为各垂直领域做专业化的组件设计与开发;同时与腾讯微博平台互通,开发者可获得海量的腾讯用户与信息资源,并在此版本基础...

    腾讯微博爬虫程序例子

    首先,你需要模拟登录腾讯微博,这通常涉及到HTTP请求和Cookie的处理,因为大部分社交媒体平台都要求登录才能访问用户数据。可以使用requests库来发送登录请求,并存储返回的session以保持登录状态。 其次,利用...

    易一辅助腾讯微博小推兔一键转发软件1.0免费绿色版

    易一辅助工具腾讯微博小推兔一键转发软件使用方法 1、首先要登陆腾讯微博 2、输入相关的信息 3、点击【一键收听】 4、进入转播界面,点击软件“转播”按钮,就能实现一键转发 易一辅助工具腾讯微博小推兔一键

    仿腾讯微博demo

    【标题】"仿腾讯微博demo"是一个项目实例,旨在模仿腾讯微博的功能,为开发者提供一个学习和参考的平台。这个demo通常包含基本的微博发布、查看、评论、转发等核心功能,帮助用户理解和实践社交网络服务(SNS)的...

    2015腾讯微博模拟登录

    这个“2015腾讯微博模拟登录”项目显然涉及到通过编程方式模拟用户登录腾讯微博的过程。让我们详细探讨一下这个过程以及相关的知识点。 首先,模拟登录的核心在于理解和模仿浏览器与服务器之间的交互。这种交互通常...

    腾讯微博备份工具20131015免费安装版

    腾讯微博备份工具功能介绍:1、可只备份自己的微博、备份别人的微博,可备份图片,可导出WORD或者网页。 2、登录后就可以把全部微博内容备份下来保存到本地电脑,包括转载广播、图片。 也可备份指定某个人的微博 3...

    asp.net 腾讯微博新浪微博帐号登录 授权

    在ASP.NET开发中,集成第三方社交媒体登录功能,如腾讯微博和新浪微博,是提高用户体验和方便用户注册的重要方式。本文将详细讲解如何在ASP.NET项目中实现腾讯微博和新浪微博的账号授权登录。 首先,我们需要理解...

    腾讯微博模拟登陆,获取需要登陆的页面源码

    本教程将详细解释如何通过编程模拟登录腾讯微博,获取登录后的页面源码。 首先,我们需要了解模拟登录的基本原理。模拟登录就是通过编程的方式,模拟用户在浏览器中输入账号、密码并提交登录的过程。在这个过程中,...

    asp.net 腾讯微博OAuth2.0SDK登陆网站源码

    asp.net 腾讯微博SDK OAuth2.0API接口,示例源码,登陆腾讯微博授权成功后可获得昵称、图像、OpenId,最新微博及粉丝等。100%可用,示例应用于 http://goupiaotong.com/login.aspx

    新浪、腾讯微博,微信好友、朋友圈 分享

    本文将深入探讨如何实现新浪、腾讯微博以及微信的好友和朋友圈的分享功能,无需依赖第三方分享平台。 首先,我们关注的是标题提到的“新浪、腾讯微博,微信好友、朋友圈 分享”。这涉及到了三个主要的社交平台:...

    腾讯微博php框架

    这个框架可以帮助开发者构建自己的微型博客平台,提供类似于腾讯微博的用户体验。通过使用PHP,该框架利用了这门语言的灵活性和广泛的应用场景,使得开发者能够快速开发、部署和维护社交网络服务。 在PHP框架中,...

    免授权 自动登录发布腾讯微博

    标题中的“免授权 自动登录发布腾讯微博”指的是一个Java开发的应用程序,它能够自动登录腾讯微博并发布微博,无需用户手动输入权限或授权信息。这个功能可能通过模拟登录过程和利用API接口来实现。 首先,我们要...

Global site tag (gtag.js) - Google Analytics