- 浏览: 369973 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (292)
- jbpm3.2 (4)
- hibernate (1)
- struts (2)
- spring (7)
- oracle (20)
- TCP/UDP (3)
- SpringSide (4)
- maven (4)
- eclipse插件 (11)
- 模板引擎 (2)
- javascript (4)
- 设计模式 (2)
- 工作中遇到异常及解决 (3)
- java文件编译问题 (1)
- ehcache应用 (1)
- java反射 (1)
- jbpm4 (1)
- Google-Gson (1)
- Jquery (6)
- XML (5)
- 工作记事 (2)
- flash builder 4 (1)
- Lucene (8)
- struts2 (1)
- AspectJ (1)
- spring proxool连接池配置 (1)
- StringUtils (1)
- spring security (5)
- JAVA点滴 (9)
- jbpm4.3 (1)
- ACL (0)
- 线程 (7)
- Java线程:新特征-线程池 (1)
- MemCache (5)
- compass (0)
- NIO (2)
- zookeeper (4)
- 并发 (2)
- redis (9)
- Nginx (5)
- jvm (1)
- 互联网 (24)
- shell (3)
- CAS (1)
- storm (4)
- 数据结构 (3)
- MYSQL (3)
- fsdfsdfsd (0)
- hadoop (19)
- hive (3)
- IntelliJ (3)
- python (3)
- 23423 (0)
- spark (7)
- netty (9)
- nmon (1)
- hbase (8)
- cassandra (28)
- kafka (2)
- haproxy (3)
- nodejs (3)
- ftp (1)
最新评论
-
记忆无泪:
遇到这个问题我用的sed -i 's/\r$//' /mnt/ ...
CentOS6 Shell脚本/bin/bash^M: bad interpreter错误解决方法 -
alenstudent:
Windows 下Nexus搭建Maven私服 -
dandongsoft:
lucene3+IK分词器 改造 lucene2.x+paoding -
duanyanrui:
学习了,支持
Google-Gson -
yscyfy:
这是你直接翻译过来的???
Google-Gson
说明:大家看到引用的包中有weibo2这个路径,这是我自己修改的,因为我的项目中有1.0的包,冲突了
上一篇讲sina的封装看到的webbo5j也是因为冲突才改的,希望大家不要误解
TuanDistributedHttpSession 这是封装的分布式session
MyUser 这是封装的一个User对象
腾讯提供的sdk中有代码错误,给大家看看
这是我修改过的,没修改之前是OAuthVersion == OAuthConstants.OAUTH_VERSION_1
这是一个小问题,估计也是刚毕业的写的
我在附件中会提供修改过的Jar包,直接用就行
public BasicAPI(String OAuthVersion){
if (OAuthVersion.equals(OAuthConstants.OAUTH_VERSION_1 )) {
requestAPI = new OAuthV1Request();
apiBaseUrl=APIConstants.API_V1_BASE_URL;
}else if(OAuthVersion.equals(OAuthConstants.OAUTH_VERSION_2_A)){
requestAPI = new OAuthV2Request();
apiBaseUrl=APIConstants.API_V2_BASE_URL;
}
}
package com.tuan.web.service.weibo;
import net.sf.json.JSONObject;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.stereotype.Service;
import com.tencent.weibo2.api.FriendsAPI;
import com.tencent.weibo2.api.TAPI;
import com.tencent.weibo2.api.UserAPI;
import com.tencent.weibo2.oauthv2.OAuthV2;
import com.tencent.weibo2.oauthv2.OAuthV2Client;
import com.tencent.weibo2.utils.QHttpClient;
/**
* @Title: QQWeiBo2.java
* @Package com.tuan.web.service.weibo
* @Description: TODO(腾讯微博)
* @author longzhun
* @date 2012-7-30 上午09:36:00
* @version V2.0
*/
@Service
public class QQWeiBo2 {
private static final Log LOG = LogFactory.getLog(QQWeiBo2.class);
private OAuthV2 oAuth;
public QQWeiBo2(){
oAuth=new OAuthV2();
init();
}
public String getRequestToken(){
String authorizationUrl = "";
QHttpClient qHttpClient=new QHttpClient(2, 2, 5000, 5000, null, null);
OAuthV2Client.setQHttpClient(qHttpClient);
authorizationUrl = OAuthV2Client.generateAuthorizationURL(oAuth);
return authorizationUrl;
}
public OAuthV2 getAccessToken(OAuthV2 oAuth,String code,String openid,String openkey){
//检查是否正确取得授权码
if (oAuth.getStatus() == 2) {
LOG.error("Get Authorization Code failed!");
}
//换取access token
oAuth.setGrantType("authorize_code");
try {
OAuthV2Client.setAuthorization(code, openid, openkey, oAuth);
OAuthV2Client.accessToken(oAuth);
} catch (Exception e1) {
e1.printStackTrace();
}
//检查是否正确取得access token
if (oAuth.getStatus() == 3) {
LOG.error("Get Access Token failed!");
}
return oAuth;
}
public void pulishMsg(OAuthV2 oAuth,String status,String fileName) throws Exception{
TAPI tAPI=new TAPI(oAuth.getOauthVersion());//根据oAuth配置对应的连接管理器
if(StringUtils.isBlank(fileName)){
tAPI.add(oAuth, "json", status, "127.0.0.1");
}else{
tAPI.addPic(oAuth, "json", status, "127.0.0.1", fileName); //发布围脖
}
tAPI.shutdownConnection();
}
public void createFriend(OAuthV2 oAuth,String name) throws Exception{
FriendsAPI friendsAPI= new FriendsAPI(oAuth.getOauthVersion());
String checkData = friendsAPI.check(oAuth, "json", name, "", "2");
JSONObject responseJsonObject;
JSONObject dataJsonObject;
responseJsonObject= JSONObject.fromObject(checkData);
dataJsonObject=((JSONObject)responseJsonObject.get("data"));
String isidol = ((JSONObject)dataJsonObject.get(name)).get("isidol").toString();
if("false".equals(isidol)){
friendsAPI.add(oAuth, "json", name, ""); //添加关注
}
friendsAPI.shutdownConnection();
}
public MyUser getUserInfo(OAuthV2 oAuth,String name) throws Exception{
UserAPI userAPI= new UserAPI(oAuth.getOauthVersion());
String res = null;
weibo4j.org.json.JSONObject userData = null;
MyUser user = null;
if(StringUtils.isBlank(name)){
res = userAPI.info(oAuth, "json");
}else{
res = userAPI.infos(oAuth, "json", name, "");
}
weibo4j.org.json.JSONObject userJson = new weibo4j.org.json.JSONObject(res);
userData = userJson.getJSONObject("data");
System.out.println(userData);
if (userData != null){
user = new MyUser();
user.setId(userData.getString("openid"));
user.setUserName(userData.getString("name"));
user.setHuaming(userData.getString("nick"));
user.setLocation(userData.getString("location"));
user.setBirth(userData.getString("birth_year"));
user.setDescription(userData.getString("introduction"));
String head = userData.getString("head");
if (head != null && !"".equals(head))
user.setPicUrl((new StringBuilder(String.valueOf(userData.getString("head")))).append("/50").toString());
String sex = userData.getString("sex");
if (sex != null && !"".equals(sex))
user.setSex(Integer.valueOf(Integer.parseInt(sex)));
}
userAPI.shutdownConnection();
return user;
}
//ClientId,ClientSecret 大家自己去申请,这个我改动了 不能给大家用
public void init(){
oAuth.setClientId("801187117");
oAuth.setClientSecret("2d485d1c588849ca036452d78ad82bc4");
oAuth.setRedirectUri("http://www.55tuan.com/a/forwardQQweibo2.do");
}
public OAuthV2 getOAuth() {
return oAuth;
}
public void setOAuth(OAuthV2 auth) {
oAuth = auth;
}
}
@RequestMapping(value = "/bindQQ2",method=RequestMethod.GET)
public String bindQQ2(QueryForm queryForm, String goodsId,ModelMap modelMap, HttpServletRequest request,
HttpServletResponse response) {
String authorizationUrl = "";
try{
authorizationUrl = qqWeiBo2.getRequestToken();
TuanDistributedHttpSession session = new TuanDistributedHttpSession(request, response);
session.setAttribute("oAuth", qqWeiBo2.getOAuth());
}catch(Exception e){
e.printStackTrace();
logger.error("bindSina is error "+e,e);
}
return "redirect:"+authorizationUrl;
}
@RequestMapping(value = "/forwardQQweibo2")
public String forwardQQweibo2(QueryForm queryForm, String code,String openid,String openkey,
ModelMap modelMap, HttpServletRequest request,
HttpServletResponse response) throws Exception {
try{
TuanDistributedHttpSession session = new TuanDistributedHttpSession(request, response);
OAuthV2 oAuth = (OAuthV2)session.getAttribute("oAuth");
qqWeiBo2.getAccessToken(oAuth,code, openid, openkey);
qqWeiBo2.pulishMsg(oAuth,"封装完毕:Oauth2授权后发表一条带网络图片的微博", "http://ww1.sinaimg.cn/bmiddle/7e14fe22jw1dvbdwfyvpoj.jpg");
qqWeiBo2.createFriend(oAuth,"linariel");
MyUser user = qqWeiBo2.getUserInfo(oAuth, null);
System.out.println(user.getId());
}catch(Exception e){
logger.error("异常信息:"+e,e);
return "error";
}
return "error";
}
- qweibo-2.0.jar (63.8 KB)
- 下载次数: 146
发表评论
-
前谷歌/前facebook技术领袖揭露他为什么如此擅长编程。
2019-11-03 19:01 282前谷歌/前facebook技术领袖揭露他为什么如此擅长编程。h ... -
java移位运算
2015-06-04 15:24 1004复习: 二进制转10进制 :要从右(低位)到左(高位) ... -
java 泛型详解
2015-04-25 13:54 418普通泛型 class Point<T>{ ... -
新浪微博Oauth2.0授权以及API调用封装
2012-07-27 16:00 2752网上有很多Oauth1.0的封装,但没Oauth2.0的,故我 ... -
对新浪,腾讯微博常用接口的统一封装
2012-07-20 23:20 842http://liudeh-009.iteye.com/blo ... -
新浪微博API(java版)
2012-07-20 23:12 1367新浪微博API(java版)================= ... -
java中HashMap详解
2012-06-26 11:55 797HashMap 和 HashSet 是 Java Coll ... -
instanceof 与isAssignableFrom
2011-10-26 10:53 1059instanceof 针对实例 isAssignableFro ...
相关推荐
首先,让我们了解OAuth2.0的基本概念,然后详细讲解腾讯微博的TAPI(Tencent API)以及如何整合这些知识来实现所需功能。 OAuth2.0是一种授权框架,它允许第三方应用安全地访问用户在某个服务提供商(如腾讯微博)...
腾讯微博API封装是一个针对开发者的工具,旨在简化与腾讯微博平台的交互过程,方便开发者集成腾讯微博的功能到自己的应用中。下面将详细讲解这个过程,包括API授权、接口调用和封装方法。 首先,让我们从授权开始。...
2. 拼接授权URL:根据腾讯微博的OAuth2.0协议,构建授权请求的URL,包含App ID、回调地址、权限范围等参数。 3. 用户授权:引导用户跳转到上述URL,用户在腾讯微博上确认授权。 4. 获取授权码:用户授权后,腾讯微博...
2. **API调用**:提供了对腾讯微博API的封装,如发布微博、转发微博、评论、获取用户信息、搜索等,简化了API调用过程。 3. **错误处理**:当API调用出现问题时,SDK能自动捕获错误并返回相应的错误信息,帮助开发者...
PHP-QQ-OAuth2.0库就是为了解决这个问题,它将调用QQ OAuth2.0接口的复杂流程封装成了一组易于使用的类。 在"PHP-QQ-OAuth2.0"项目中,开发者可以创建一个类实例,通过调用特定方法来实现QQ登录的集成。例如,关键...
1. **OAuth认证**:腾讯微博API使用OAuth 2.0进行授权,这是互联网上广泛采用的一种安全授权协议。开发者需要先注册应用获取App Key和App Secret,然后通过OAuth流程获取用户授权,才能访问用户的微博数据。 2. **...
需要注意的是,腾讯微博的分享可能需要处理OAuth 2.0授权流程。 3. 微信分享: 微信提供了微信开放平台,开发者可以注册应用并获取AppID和AppSecret。微信SDK支持多种分享形式,如文本、图片、网页链接、小程序等...
PHP版腾讯微博SDK库3.0.2是一个用于与腾讯微博平台进行交互的开发工具包,它使得PHP...在整个过程中,理解OAuth 2.0授权流程、熟悉腾讯微博的API接口,以及掌握SDK提供的各种工具和功能,都是开发者必备的知识点。
1. **认证机制**:SDK提供OAuth 2.0认证流程,这是腾讯微博API的基本安全要求。通过授权码(Access Token),开发者可以在用户的许可下访问其微博账户的相关信息。 2. **请求与响应对象**:SDK封装了HTTP请求和响应...
QQ登录的API是腾讯提供的一种服务,允许第三方应用通过OAuth2.0协议获取用户的QQ账号信息,以便实现安全的身份验证和授权。C#开发者可以利用这些API为自己的应用程序添加QQ登录功能,使得用户可以通过自己的QQ账号...
总结一下,"新浪腾讯微博分享demo"主要涵盖了OAuth 2.0授权流程、微博API的使用、分享功能的实现,以及用户体验设计。通过这个demo,开发者能够学习到如何在移动或Web应用中集成微博分享,为用户提供方便快捷的社交...
用户授权流程结束后,应用会得到OAuth Token和OAuth Token Secret,这两个参数用于调用网易微博的API。 最后是搜狐微博的OAuth整合。开发者需在搜狐开放平台注册应用,获取API Key和Secret Key。在用户授权后,应用...
1. **OAuth认证**:腾讯微博采用OAuth 2.0协议进行授权,这是目前广泛使用的开放网络身份验证标准。开发者需要在腾讯微博开放平台上注册应用,获取App ID(客户端ID)和App Key(客户端密钥)。OAuth流程包括请求...
如果你需要其他未提供的功能,可以查看腾讯微博的官方API文档,了解如何通过SDK直接调用未封装的API接口,然后根据需要扩展SDK的功能。 6. **注意事项**: 在使用过程中,务必遵守腾讯微博的开发者政策,不要滥用...
1. **OAuth认证**:腾讯微博使用OAuth 2.0进行授权,允许第三方应用安全地获取用户的微博信息,而不必存储用户的登录凭据。开发者需要申请获得App Key和App Secret,然后通过这些密钥引导用户授权,获取Access Token...
这个压缩包"安卓Android源码——新浪、腾讯、网易、搜狐微博OAuth认证整合Android版.zip"提供了针对四大中国主流社交媒体平台——新浪、腾讯、网易和搜狐的OAuth认证整合示例代码,这对于开发者来说是宝贵的资源,...
腾讯微博API Demo是一款基于腾讯微博开放平台的示例应用,它展示了如何使用腾讯微博的API进行各种功能的实现,如发布微博、获取用户信息、管理粉丝等。此压缩包文件包含了一个完整的SDK(Software Development Kit)...
这些SDK封装了OAuth认证和API调用,简化了与微博平台的交互。你需要学习如何集成这两个SDK到ThinkPHP项目中,设置相应的配置,如API密钥、回调URL等。 3. **会话管理**:当用户授权后,你需要将访问令牌存储在...
这个微博客户端中用到得一些知识点。...15:腾讯Oauth认证的使用(新浪的,人人的,淘宝的开放API也是基于这个的,版本不同可能) 16:ViewHolder以及LayoutInflater等的使用 17:腾讯API的调用与封装
总结起来,实现新浪微博一键分享功能,开发者需要对OAuth2.0授权机制有基本了解,熟悉微博开放平台的API接口,以及如何使用SDK进行集成。同时,良好的用户体验设计也是关键,如在分享过程中保持流畅,错误处理及时且...