`

android客户端连接人人网之二----获取签名

 
阅读更多
官方文档:
http://dev.xiaonei.com/wiki/Calculate_signature

很简单
首先组装参数:
我们以friends.getFriends接口为例子:
required的参数是必选的,除了sig以外,因为签名值还没算,alternative的参数,要么选access_token,要么选api_key和session_key。Optional的参数是可选的,一般我们都要选上format这个参数,使返回的数据格式为JSON,这样解析的时候会方便很多,其它参数都是可选的
代码:
	private void getParams() {
		String method = " friends.getFriends "; // 人人API中定义的方法,用于得到当前登录用户的好友列表。
		int count = 30; // 得到用户数30个

		List<String> param = new ArrayList<String>();
		param.add("method=" + method);
		param.add("v=1.0"); // 版本固定参数
		param.add("access_token=" + RenrenUtil.access_token); // RenrenUtil.access_token
																// 是在LoginActivity中已经保存的数据
		param.add("format=JSON"); // 返回JSON数据
		param.add("count=" + count); // 得到用户数

		String signature = getSignature(param,
				"换成自己的secret key"); // 第二个参数为 Secret Key

		List<BasicNameValuePair> paramList = new ArrayList<BasicNameValuePair>();
		paramList.add(new BasicNameValuePair("sig", signature)); // 签名
		paramList.add(new BasicNameValuePair("method", method));
		paramList.add(new BasicNameValuePair("v", "1.0"));
		paramList.add(new BasicNameValuePair("access_token",
				RenrenUtil.access_token));
		paramList.add(new BasicNameValuePair("format", "JSON"));
		paramList.add(new BasicNameValuePair("count", "" + count));
	}

然后获取md5签名:
/**
	 * 得到MD5签名
	 * 
	 * @param paramList
	 * @param secret
	 * @return
	 */
	public String getSignature(List<String> paramList, String secret) {
		Collections.sort(paramList);
		StringBuffer buffer = new StringBuffer();
		for (String param : paramList) {
			buffer.append(param); // 将参数键值对,以字典序升序排列后,拼接在一起
		}
		buffer.append(secret); // 符串末尾追加上应用的Secret Key
		try {// 下面是将拼好的字符串转成MD5值,然后返回
			java.security.MessageDigest md = java.security.MessageDigest
					.getInstance("MD5");
			StringBuffer result = new StringBuffer();
			try {
				for (byte b : md.digest(buffer.toString().getBytes("utf-8"))) {
					result.append(Integer.toHexString((b & 0xf0) >>> 4));
					result.append(Integer.toHexString(b & 0x0f));
				}
			} catch (UnsupportedEncodingException e) {
				for (byte b : md.digest(buffer.toString().getBytes())) {
					result.append(Integer.toHexString((b & 0xf0) >>> 4));
					result.append(Integer.toHexString(b & 0x0f));
				}
			}
			return result.toString();
		} catch (java.security.NoSuchAlgorithmException ex) {
		}
		return null;
	}
分享到:
评论

相关推荐

    人人-Android客户端-高仿-源码

    这个源码项目是对人人网Android客户端的高度仿制,旨在提供一个学习和参考的平台,帮助开发者深入理解移动应用的开发流程,尤其是社交应用的设计和实现。它包含了完整的代码、资源文件以及图片素材,为开发者提供了...

    WebSocket安卓客户端实现详解(二)--客户端发送请求

    WebSocket是Web应用中的一种实时通信协议,它允许服务器与客户端之间进行双向通信,即服务器可以主动向客户端推送数据,而不仅仅是响应客户端的请求。在安卓客户端实现WebSocket时,我们需要了解和掌握以下几个关键...

    Android客户端上开发人人客户端系列教程

    人人网应用程序的开发第二篇:Android平台上Mobile 客户端应用 人人网应用程序的开发第三篇:人人网签名算法 人人网应用程序的开发第四篇:基础API使用 人人网应用程序的开发第五篇:高级API使用 人人网应用程序的...

    Android应用源码之空气质量检测客户端项目-IT计算机-毕业设计.zip

    Android应用源码之空气质量检测客户端项目-IT计算机-毕业设计.zip Android应用源码之空气质量检测客户端项目-IT计算机-毕业设计.zip Android应用源码之空气质量检测客户端项目-IT计算机-毕业设计.zip Android应用...

    android客户端和服务端的连接

    在Android应用开发中,客户端和服务端的连接是实现数据交互的关键环节。这个小型的网络服务器与安卓客户端的连接示例可能涵盖了HTTP、HTTPS协议、WebSocket、Socket编程等基础概念。以下将详细介绍这些知识点: 1. ...

    新闻管理系统,服务器、Android客户端和PC端news-manager-system-master.zip

    - **代码示例**:压缩包中可能包含一个运行示例,展示了如何使用Android客户端获取、显示新闻数据。 - **学习资源**:开发者可以参考这些示例代码理解新闻系统的实现细节和最佳实践。 6. **数据解析与展示**: -...

    Android-Android客户端网络请求签名认证

    微信签名规范在业界被广泛应用,它为Android客户端与服务器之间的通信提供了可靠的安全保障。本文将深入探讨基于微信签名规范的Android客户端网络请求签名认证。 首先,我们需要理解签名的基本概念。签名是通过一种...

    duic 配置中心 Java-Android 客户端工具包-duic-java-client.zip

    "duic 配置中心 Java-Android 客户端工具包-duic-java-client.zip" 是一个专门为Java和Android开发者设计的客户端工具包,用于连接和交互与duic配置中心。这个工具包简化了在应用程序中集成远程配置的过程,使得...

    057集-Android客户端与服务端交互-服务端代码

    在本节"057集-Android客户端与服务端交互-服务端代码"的视频教程中,我们将深入探讨Android应用程序如何与服务端进行有效且安全的通信,这对于开发任何涉及网络功能的Android应用来说都是至关重要的。这个教程针对的...

    android客户端与后台服务器交互

    在本示例中,Android客户端负责用户界面、数据获取和显示。它使用HTTP或HTTPS协议通过网络与服务器进行通信。Android SDK提供了HttpURLConnection和HttpClient等API来实现网络请求,但现在推荐使用Retrofit、OkHttp...

    白宫Android客户端 wh-app-android

    【标题】:“白宫Android客户端 wh-app-android”是一个专门为Android用户设计的应用程序,它允许用户方便地访问和互动与白宫的相关信息。这个应用是白宫官方在移动设备上的一个接口,为公众提供了一个窗口,以了解...

    android-support-v4-v7-v13-v14-v17(官方最新完整版)

    android-support-v4-v7-v13-v14-v17(官方最新完整版),官方最新版的,压缩包内包含android-support-v4、android-support-v7-appcompat,android-support-v7-cardview,android-support-v7-gridlayout,android-support-...

    ksoap2-android-assembly-2.6.5-jar-with-dependencies.jar

    ksoap2-android-assembly-2.6.5-jar-with-dependencies.jar 要是需要最新的,下载地址: http://code.google.com/p/ksoap2-android/

    Android-Daily内容采集的Android客户端

    【Android-Daily内容采集的Android客户端】是一款遵循Material Design设计规范、采用MVP(Model-View-Presenter)架构模式,并结合RxJava和Retrofit技术实现的内容采集应用。这个项目为开发者提供了一个完整的...

    android aocket客户端连接

    ### Android Socket 客户端连接知识点详解 #### 一、概览 在现代移动应用开发中,客户端(如Android应用程序)与服务器之间的实时通信是非常重要的功能之一。Android平台提供了多种方式来实现网络通信,其中Socket...

    android使用webrtc音视频传输客户端和服务器源码

    ProjectRTC是一个WebRTC的PC端项目,实现了WebRTC的服务器功能和...AndroidRTC是ProjectRTC的android客户端,下载后直接AndroidStudio打开。AndroidRTC中包含两个moudle,app是主界面,webrtc-client是工具类moudle 。

    android客户端与服务器数据交互的Demo

    综上所述,Android客户端与服务器的数据交互是一个涉及网络连接、请求构建、响应处理、数据解析等多个环节的过程。在实际开发中,开发者需要熟练掌握各种网络请求库、数据解析工具以及安全策略,以实现高效、安全的...

    android的XMPP客户端

    总之,创建Android的XMPP客户端涉及到的知识点包括XMPP协议原理、Android开发环境、Smack库的使用、网络连接管理、异步编程、消息收发、群组聊天、文件传输以及推送通知的集成。通过熟练掌握这些技术,开发者可以...

    webSocket实现Android客户端之间简单的通讯

    WebSocket是一种在客户端和服务器之间建立持久连接的协议,它允许双方进行全双工通信,即数据可以在两个方向上同时传输,极大地提高了实时性。在Android客户端间实现WebSocket通讯,可以用于构建聊天应用、游戏同步...

Global site tag (gtag.js) - Google Analytics