在上一篇文章中,大致介绍了基于新浪微博开放平台的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网站接入细节备忘录 #### 一、引言 随着移动互联网的发展,社交网络服务(Social Networking Services,简称SNS)已成为人们日常生活中不可或缺的一部分。为了更好地利用这些平台进行用户...
随着智能手机的普及,尤其是Android系统的广泛应用,开发基于Android的SNS社交网络客户应用成为了市场需求的关键。本报告旨在探讨这类应用的需求,通过分析现有产品,如微信和米聊,以及预想未来产品的特性,为开发...
《Android社交网络客户端开发详解》 在当今数字化时代,社交网络已经成为了人们日常生活的一部分,而Android作为全球最大的智能手机操作系统,其上的社交网络客户端更是扮演着举足轻重的角色。本项目"sns_SNS_...
针对现有Android平台的新浪微博客户端存在的问题,如广告过多和界面设计保守,本课题旨在开发一款优化用户体验、无广告干扰的Android微博客户端。该客户端将注重用户体验,提供高效、简洁的界面设计,同时确保功能...
### ExtJS+Android+SSH整合开发Web与移动SNS #### 一、概述 随着互联网技术的不断发展,Web应用及移动应用的需求日益增加。在众多的技术栈中,ExtJS、Android以及SSH(Struts2 + Spring + Hibernate)是构建高质量...
本报告主要针对基于 Android 的 SNS 社交网络客户应用进行需求调研,以期为开发出更符合用户需求的应用提供指导。 首先,我们分析了市面上的主流社交应用,如微信和米聊。微信凭借其与QQ的深度整合、丰富的功能(如...
本报告针对 Android 平台上的 SNS 社交网络客户应用进行需求调研,旨在为开发更加符合用户需求的社交应用提供依据。 一、同类产品分析 1. 微信:作为腾讯公司的主打产品,微信集成了QQ的功能,支持语音聊天、群聊...
支持wap,并提供手机客户端,包括iphone和android 多系统账号登录支持,新浪微博,豆瓣等 集成整合各社交媒体平台,账号绑定与关联 通过小插件和大型应用双重机制扩展. 应用的开发和扩展更加独立、灵活
成功获取到用户信息后,应将其存储在服务器端,同时在客户端保存一个本地登录态,如JWT(JSON Web Token)或自定义的登录令牌。每次用户访问需要登录权限的页面时,通过令牌验证用户身份。 7. 异常处理与安全策略...
Android则需要在Google Firebase Console中创建项目,获取服务器和客户端的API密钥。 2. **配置推送证书**:对于iOS,开发者需要创建.p12证书文件,包含APNs证书,以便服务器能安全地发送推送。Android通常需要...
- Android平台因其良好的开放性和便捷性,成为开发移动端社交软件的理想选择。 - 智能手机功能日益强大,已成为人们日常生活中不可或缺的一部分,尤其是在信息获取和处理方面。 2. **国内外社交软件的发展状况**...
全新的ThinkSNS 2.1Beta,为您...ThinkSNS从来都是二次开发者的利器,2.1更是具备了小插件与大型应用的双重扩展机制,同时开发的文档,各种接口也日趋完善,非常易于做二次开发,让站长很容易的做出更为个性化的网站