/wiki/User:10.7.18.79 登录/创建账户 

在上一章完成用户授权之后,即可以调用Rest API接口,获取到用户的姓名、头像等个人信息。

目录

[编辑] 下载Java SDK

为了获取用户信息,我们需要调用Rest API来完成,但是人人网提供的Java SDK已经将调用细节进行了封装。

下面,我们到人人网开源项目去下载Java SDK:可以直接下载jar包,也可以下载源文件压缩包或在官方代码库使用Hg获取最新的代码。

注意:Java SDK依赖一个称为json-simple的jar包,用于处理Rest API返回的JSON格式的响应文本。如果直接用jar包的话,可以到Java_SDK_jar包下载去下载renren-api-java-sdk.jar和json-simple-1.1.jar并放置到/WEB-INF/lib目录下,并在工程编译时把这个jar包放到build path中。

[编辑] 初始化Java SDK

Java SDK在使用前需要初始化一些重要参数,如API Key以及Secret等。这个初始化只需要执行一次,所以我们放在ServletContextListener中去执行。

创建一个ServletContextListener(类名:com.yourdomain.webcanvas.ApiInitListener),内如如下:

package com.yourdomain.webcanvas;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

import com.renren.api.client.RenrenApiConfig;
import com.yourdomain.webcanvas.config.AppConfig;

public class ApiInitListener implements ServletContextListener{

	@Override
	public void contextDestroyed(ServletContextEvent arg0) {
		//Nothing to do
	}

	@Override
	public void contextInitialized(ServletContextEvent arg0) {
		RenrenApiConfig.renrenApiKey = AppConfig.API_KEY;
		RenrenApiConfig.renrenApiSecret = AppConfig.APP_SECRET;
	}
}

在这个listener中,我们初始化了API Key和Secret值。

下面把这个listenner配置到web.xml中。在web.xml中添加如下配置:

<listener>
	<listener-class>com.yourdomain.webcanvas.ApiInitListener</listener-class>
</listener>

[编辑] 调用users.getInfo接口

修改com.yourdomain.webcanvas.HomeServlet类,修改后内如如下:

package com.yourdomain.webcanvas;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.json.simple.JSONArray;
import org.json.simple.JSONObject;

import com.renren.api.client.RenrenApiClient;
import com.yourdomain.webcanvas.config.AppConfig;

@SuppressWarnings("serial")
public class HomeServlet extends HttpServlet {
	@Override
	protected void doGet(HttpServletRequest request, HttpServletResponse response) 
	throws ServletException, java.io.IOException {
		String sessionKey = request.getParameter("xn_sig_session_key");
		String renrenUserId = request.getParameter("xn_sig_user");
		if (sessionKey != null && renrenUserId != null) {
			RenrenApiClient apiClient = new RenrenApiClient(sessionKey);
			JSONArray userInfo = apiClient.getUserService().getInfo(renrenUserId, "name,headurl");
			if (userInfo != null && userInfo.size() > 0) {
				JSONObject currentUser = (JSONObject) userInfo.get(0);
				if (currentUser != null) {
					String userName = (String) currentUser.get("name");
					String userHead = (String) currentUser.get("headurl");
					request.setAttribute("userName", userName);
					request.setAttribute("userHead", userHead);
				}
			}
		}
		
		request.setAttribute("appId", AppConfig.APP_ID);
		RequestDispatcher welcomeDispatcher = request.getRequestDispatcher("/views/home.jsp");
		welcomeDispatcher.forward(request, response);
	}
}

上述代码首先从xn_sig参数中获取了Session Key和用户ID,然后创建了一个RenrenApiClient对象用于调用Rest API的用户信息接口(具体接口是users.getInfo接口)。接口调用的的返回结果是一个JSON数组,从里面的恰当的节点中拿到了用户姓名和头像地址。

[编辑] 将用户信息在页面展示

修改/views/home.jsp,增加对于用户姓名和头像的展示。修改后/views/home.jsp的内如如下所示:

<%@ page contentType="text/html;charset=UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  <title>Renren Webcanvas Demo -- Home</title>
</head>
<body>
  <img src="${requestScope.userHead}"/>
  <p>你好,${requestScope.userName}</p>	
</body>
</html>

现在重启web server,访问 http://apps.renren.com/yourapp/home ,结果如下:

[编辑] 相关链接