`
river418
  • 浏览: 27350 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

Android:SNS客户端开发二:获取授权账号资料

 
阅读更多

      在上一篇文章中,大致介绍了基于新浪微博开放平台的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网站接入细节备忘录 #### 一、引言 随着移动互联网的发展,社交网络服务(Social Networking Services,简称SNS)已成为人们日常生活中不可或缺的一部分。为了更好地利用这些平台进行用户...

    基于安卓Android的SNS社交网络客户应用需求调研报告范本.pdf

    随着智能手机的普及,尤其是Android系统的广泛应用,开发基于Android的SNS社交网络客户应用成为了市场需求的关键。本报告旨在探讨这类应用的需求,通过分析现有产品,如微信和米聊,以及预想未来产品的特性,为开发...

    SNS.rar_ sns_SNS_android_社交网络

    《Android社交网络客户端开发详解》 在当今数字化时代,社交网络已经成为了人们日常生活的一部分,而Android作为全球最大的智能手机操作系统,其上的社交网络客户端更是扮演着举足轻重的角色。本项目"sns_SNS_...

    基于安卓Android的SNS社交网络客户应用需求调研报告.doc

    针对现有Android平台的新浪微博客户端存在的问题,如广告过多和界面设计保守,本课题旨在开发一款优化用户体验、无广告干扰的Android微博客户端。该客户端将注重用户体验,提供高效、简洁的界面设计,同时确保功能...

    ExtJS+Android+SSH整合开发Web与移动SNS

    ### ExtJS+Android+SSH整合开发Web与移动SNS #### 一、概述 随着互联网技术的不断发展,Web应用及移动应用的需求日益增加。在众多的技术栈中,ExtJS、Android以及SSH(Struts2 + Spring + Hibernate)是构建高质量...

    于基安卓android的sns社交网络客户应用需求调研报告大学论文.doc

    本报告主要针对基于 Android 的 SNS 社交网络客户应用进行需求调研,以期为开发出更符合用户需求的应用提供指导。 首先,我们分析了市面上的主流社交应用,如微信和米聊。微信凭借其与QQ的深度整合、丰富的功能(如...

    于基安卓android的sns社交网络客户应用需求调研报告--大学毕设论文.doc

    本报告针对 Android 平台上的 SNS 社交网络客户应用进行需求调研,旨在为开发更加符合用户需求的社交应用提供依据。 一、同类产品分析 1. 微信:作为腾讯公司的主打产品,微信集成了QQ的功能,支持语音聊天、群聊...

    ThinkSNS2.0

    支持wap,并提供手机客户端,包括iphone和android 多系统账号登录支持,新浪微博,豆瓣等 集成整合各社交媒体平台,账号绑定与关联 通过小插件和大型应用双重机制扩展. 应用的开发和扩展更加独立、灵活

    微信第三方登录

    成功获取到用户信息后,应将其存储在服务器端,同时在客户端保存一个本地登录态,如JWT(JSON Web Token)或自定义的登录令牌。每次用户访问需要登录权限的页面时,通过令牌验证用户身份。 7. 异常处理与安全策略...

    PushNotificationDemo

    Android则需要在Google Firebase Console中创建项目,获取服务器和客户端的API密钥。 2. **配置推送证书**:对于iOS,开发者需要创建.p12证书文件,包含APNs证书,以便服务器能安全地发送推送。Android通常需要...

    浅析国内社交网络发展

    - Android平台因其良好的开放性和便捷性,成为开发移动端社交软件的理想选择。 - 智能手机功能日益强大,已成为人们日常生活中不可或缺的一部分,尤其是在信息获取和处理方面。 2. **国内外社交软件的发展状况**...

    ThinkSNS v2.1 Beta PHP版.rar

    全新的ThinkSNS 2.1Beta,为您...ThinkSNS从来都是二次开发者的利器,2.1更是具备了小插件与大型应用的双重扩展机制,同时开发的文档,各种接口也日趋完善,非常易于做二次开发,让站长很容易的做出更为个性化的网站

Global site tag (gtag.js) - Google Analytics