Java认证人人开放平台


1.       注册应用

在人人网注册应用,注册应用成功后会得到APP IDAPI KeySecret

应用申请成功后,API KeySecret就会显示在“开放平台”à“我的应用”页面

 

2.       下载人人网OAuth2.0代码

人人网OAuth2.0认证代码:http://lovertest.googlecode.com/svn/trunk/RenRen4j/

(下载src目录下的代码即可)

 

3.       加入jar包:

JUnit4(Eclipse自带)

commons-codec.jar

commons-httpclient.jar

commons-logging-1.1.1.jar

Json-simple-1.1.jar

 

4.       创建项目

新建Java项目,Renren Oauth2.0代码复制到项目中,并修改代码。

1)复制Renren Oauth2.0代码到项目中;

2)修改com.carey.renren.RenRenOauth.javaAPIKeySecretKey属性,设置成自己的API KeySecret

 

5.       测试类

 

package com.carey.renren;

 

import java.io.UnsupportedEncodingException;

import java.net.URLEncoder;

import java.util.Scanner;

import java.util.TreeMap;

import org.junit.Test;

import com.carey.renren.RenRenHttpClient;

import com.carey.renren.RenRenOAuth;

import com.carey.renren.utils.RenRenHttpUtil;

 

/**

 * 人人网 Oauth2.0认证过程(Java)

 *

 * 本测试类中有四个测试方法:

 * 1.testGetAuthorizationCode

 * 2.testGetAccessToken

 * 3.testGetSessionKey

 * 4.testAPI

 *

 * 按顺序和方法注解执行上面的测试方法

 * 注意:按照顺序是因为每个测试方法需要前一个方法的结果

 *

 * @author Lupeng

 * @create 2011-08-01

 * @modify 2011-08-05

 *

 * E-mail: lupeng0527@163.com

 * QQ: 244077575

 */

public class RenrenTester {

    /**

     * 1.获取Authorization Code

     *

     * 测试本方法,控制台会输出一个URL,在浏览器中进入此URL

     * 会返回一个新的URL http://graph.renren.com/oauth/login_success.html?code=***

     * code的值***就是Authorization Code

     */

    @Test

    public void testGetAuthorizationCode() {

       System.out.println("get Authorization Code......");

       try {

           String urlStr = RenRenOAuth.AuthorizationURL + "?"

                   + "client_id=" + RenRenOAuth.APIKey + "&"

                   + "response_type=code" + "&"

                   + "redirect_uri=" + RenRenOAuth.RedirectURL;

           System.out.println("authorization url: \n" + urlStr);

       } catch (Exception e) {

           e.printStackTrace();

       }

    }

   

    /**

     * 2.获取访问令牌

     * 执行次测试方法,输入上面得到的Authorization Code,会返回一个地址,

     * 进入此地址会返回一个json数据,记录下此数据

     */

    @Test

    public void testGetAccessToken() {

       System.out.println("get Access Token......");

      

       System.out.println("Input your Authorization code");

       Scanner in = new Scanner(System.in);

       String input = in.nextLine();

 

       try {

           String urlStr = RenRenOAuth.OAuthURL + "?" + "client_id="

                  + RenRenOAuth.APIKey + "&client_secret="

                  + RenRenOAuth.SecretKey + "&redirect_uri="

                  + RenRenOAuth.RedirectURL

                  + "&grant_type=authorization_code" + "&code=" + input;

           System.out.println("access url: \n" + urlStr);

       } catch (Exception e) {

           e.printStackTrace();

       }

    }  

   

    /**

     * 3.获取Session Key

     * 输入上面json中的access token

     * 会得到获取Session Key的链接地址,同样会返回一个资源地址,进入此地址,会返回json数据,

     * 这个json数据中包含了session_key

     */

    @Test

    public void testGetSessionKey() {

       System.out.println("get Session Key......");

       System.out.println("Input your Access token");

       Scanner in = new Scanner(System.in);

       String input = in.nextLine();

      

       try {

           input = URLEncoder.encode(input, "UTF-8");

       } catch (UnsupportedEncodingException e1) {

           e1.printStackTrace();

       }

 

       try {

           String urlStr = RenRenOAuth.SessionURL + "?" + "oauth_token=" + input;

           System.out.println("session url: \n" + urlStr);

       } catch (Exception e) {

           e.printStackTrace();

       }

    }  

 

    /**

     * 4.测试Renren Java API

     * 执行此测试方法时会需要上面得到的session_key

     * 返回的json就是你要获取的人人网的数据。

     */

    @Test

    public void testAPI() {

       System.out.println("Input your Session Token");

       String input = null;

       Scanner in = new Scanner(System.in);

       input = in.nextLine();

      

       TreeMap<String, String> params = new TreeMap<String, String>();

       params.put("session_key", input);

       // params.put("method", "friends.getFriends");   // 获取当前用户好友

       params.put("method", "users.getInfo"); // 获取当前用户信息

       params.put("uids", "242508128");       // 当前用户ID

 

       // 测试更多方法请查看Renren API

      

       String content = sendPostRestRequest(params, "JSON", RenRenOAuth.ApiUrl);

       if (content.indexOf("error_code") >= 0) {

           //error

       }

       System.out.println(content);

    }

   

    public static String sendPostRestRequest(TreeMap<String, String> params,

           String format, String url) {

       RenRenHttpUtil.prepareParams(params, format);

       String content = RenRenHttpClient.doPost(url, params);

       return content;

    }  

}

 

 

6.       示例代码地址:

 

邮箱:lupeng0527@163.com

Q Q244077575        

 

posted on 2011-08-05 13:43  小手拔凉  阅读(719)  评论(0编辑  收藏  举报