在上一篇文章中,大致介绍了基于新浪微博开放平台的OAuth认证方法及相关实现。那么在用户成功授权,取到相应的AccessToken以及Access_secret后,我们就可以利用这两个值通过新浪提供的对应API,去获取用户资料了。
这里我们需要用到Http请求相关的内容。获取用户资料是采用的Get方法,此处只放出Get方法的相应代码。使用HttpClient开源项目,该项目已经被Android包含无需单独引入jar包。
在获取用户资料时。通过Get方法传递的单数都要统一经过UTF-8编码,并且与OAuth认证相关的参数一起签名后再发送到服务器。废话不多说,先看Get方法的代码。
public class WeiBoClient {
private OAuthConsumer consumer;
public WeiBoClient() {
}
public WeiBoClient(String consumerKey, String consumerSecret,
String oauthToken, String oauthTokenSecret) {
// 生成一个OAuthConsumer对象
consumer = new CommonsHttpOAuthConsumer(consumerKey, consumerSecret);
// 设置OAuth_Token和OAuth_Token_Secret
consumer.setTokenWithSecret(oauthToken, oauthTokenSecret);
}
public String doGet(String url, List<NameValuePair> addtionalParams) throws ClientProtocolException, IOException, OAuthMessageSignerException, OAuthExpectationFailedException, OAuthCommunicationException {
String result = null;
url = buildUrlByQueryAndBaseUrl(url, addtionalParams);
String signedUrl = null;
System.out.println("签名之前的URL--->" + url);
signedUrl = consumer.sign(url);
System.out.println("签名之后的URL--->" + signedUrl);
HttpGet getRequest = new HttpGet(signedUrl);
HttpClient httpClient = new DefaultHttpClient();
HttpResponse response = null;
response = httpClient.execute(getRequest);
result = parseStringFromEntity(response.getEntity());
return result;
}
public String buildUrlByQueryAndBaseUrl(String url,List<NameValuePair> pairs){
String queryStr = URLEncodedUtils.format(pairs, "UTF-8");
return url + "?" + queryStr;
}
public String parseStringFromEntity(HttpEntity entity){
String result = null;
try {
InputStream input = entity.getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(
input));
String line = null;
StringBuffer sb = new StringBuffer();
while ((line = reader.readLine()) != null) {
sb.append(line);
}
result = sb.toString();
} catch (Exception e) {
System.out.println(e);
}
return result;
}
}
再在外部Activity中调用相应的方法就能获取到账号的资料了
public void getUser(String access_token, String access_secret,
String user_id) throws ClientProtocolException, OAuthMessageSignerException, OAuthExpectationFailedException, OAuthCommunicationException, IOException {// 添加用户
List<NameValuePair> params = new ArrayList<NameValuePair>();
BasicNameValuePair user_id = new BasicNameValuePair("user_id", user_id);
params.add(user_id);
WeiBoClient weibo = new WeiBoClient(SinaConstant.CONSUMER_KEY,SinaConstant.CONSUMER_SECRET, access_token, access_secret);
keyValues.put("user_id", user_id);
String userInfo;
userInfo = weibo.doGet(
"http://api.t.sina.com.cn/users/show.json", params);
System.out.println(userInfo);
JSONObject user = null;
try {//对获取到资料信息进行JSON解析
user = new JSONObject(userInfo);
String headUrl = user.getString("profile_image_url");
System.out.println(headUrl);
String screen_name = user.getString("screen_name");
String name = user.getString("name");
System.out.println(screen_name + "&&&" + name);
} catch (Exception e) {
e.printStackTrace();
}
// return null;
}
以上代码中的user_id为上一篇文章中我们获取到的对应的用户id。传入参数请参考新浪微博开放平台的API文档,地址如下:http://open.weibo.com/wiki/Users/show
注:我这里对所有方法的异常处理均为抛出,直到最顶层调用该方法时再捕捉
分享到:
相关推荐
Android:SNS客户端开发八:发送带图片的微博 第一种方法
基于安卓Android的SNS社交网络客户应用需求调研报告范本.pdf基于安卓Android的SNS社交网络客户应用需求调研报告范本.pdf基于安卓Android的SNS社交网络客户应用需求调研报告范本.pdf基于安卓Android的SNS社交网络客户...
报报告:SNS在中国的机会及未来发展趋向报报告:SNS在中国的机会及未来发展趋向
电子商务案例分析:SNS平台案例.ppt
人人都玩开心网:Ext+JS+Android+SSH整合开发Web与移动SNS
开心网CEO程炳皓:SNS的3个方向.docx
Android的SNS App源码,内容自己看哈,互相交流学习下
我的第二个android sns应用程序。 与相比,此应用程序是升级版本。 잭트는 진화된잭트NS NS케케케케케NS NS NS。 。른른。구현했습니구현했습니구현했습니구현했습니。 목차 기술스택 언어: Java,PHP,...
本人在12年7月份研究android如何与SNS网站接入时写的备忘录,主要信息也是收集于各SNS网站的接入开发说明,然后加以精简,希望节省大家时间,对大家有帮助。主要网站包括开心网、腾讯微博、新浪微博、人人网。
Android经典开发---豆瓣网移动客户端 讲解+源代码
基于安卓Android的SNS社交网络客户应用需求调研报告范本.docx基于安卓Android的SNS社交网络客户应用需求调研报告范本.docx基于安卓Android的SNS社交网络客户应用需求调研报告范本.docx基于安卓Android的SNS社交网络...
Android娱乐多媒体软件、赶集网手机客户端、移动办公、来电管理器、短信监控器、电话监控器、手机安全软件、手机守护神、新浪微博客户端、贪吃蛇游戏、数独游戏。 Java虚拟机实现、基于分布式架构的大型B2C电子商务...
Caokun.Net:trade_mark: SNS:开源社交网络服务软件,PHP + MySQL编写
它是支持ActivityPub的分布式SNS的客户端。 如何使用 您可以通过输入分布式SNS的实例地址并登录来使用它。 支持的操作系统 Windows10 64位 对于Mac和Linux,我们将尽快制作兼容版本。 (也许) 更新记录 1.0.0第一...
自己编写的android社交网络客户端,服务器也是自己编写的
本软件是一款android的拼车聊天的社交软件的客户端,功能包括拼车,查找好友,查找附近的人,聊天和sns等功能。整个工程是在intellij IDAE下开发的。与服务端通过http+json进行通讯交互。想学习移动互联网的朋友可以...
SNS-简单名称服务器这是什么? SNS-使用动态名称服务器很容易。 该软件的主要目标-替换DNS数据包中的数据。 简单的工作方法: 使用之前:DNS客户端<----> DNS服务器使用后:DNS客户端<----> SNS <---...
2012年12月21-22日,由杭州安恒信息技术有限公司与人人网联合主办2012(首届)互联网安全高峰论坛成功举办,本届高峰论坛的主题为“末日安全 & 人人安恒”。本届论坛主要内容将围绕WEB应用防护的技术体系建设和产品...
ExtJS+Android+SSH整合开发Web与移动SNS
之前发布的SNS利器--通过邮箱获取通讯录近期发现问题。现在已经确认sohu无法获取其通讯录。126获取的问题已经修正。特发布该1.1版本,希望不要耽误大家的项目!已经下载过1.0版本的请下载专门针对126的补丁。没有...