前言:最近需要做一个Web应用,需要用到易班开放平台的Api,在此基础上进行二次开发,由于网上的资料比较少,官方文档和Demo里面也没有讲的很清楚,于是就自己研究了一下,方便各位同学参考。

1.首先要申请成为易班开放平台开发者:https://open.yiban.cn/;

2.到官方网站下载Java版的SDK:https://open.yiban.cn/wiki/index.php?page=SDK%E4%B8%8B%E8%BD%BD;

3.到开放平台创建一个Web应用,获取到APPID和APPSECRET,这两个东西是这个应用的唯一凭证;

4.前面的信息随便填,比较重要的是后面的网站地址;

java给第三方提供接口的方法 java接入第三方sdk_易班API

我的项目访问地址是http://127.0.0.1:8080/yiban_demo,开始创建应用的时候我们把三个地址先写成一样的,授权回调地址我后面会说到。

5.新建一个项目,我这里暂且使用eclipse来做演示,其他的工具类似。项目结构如下:

java给第三方提供接口的方法 java接入第三方sdk_java给第三方提供接口的方法_02

首先,db包里是对数据库的一些操作,无关本篇博客要讲的内容,就不多说了;
然后是filter包下的文件,验证用户是否登录的拦截器;
moudel包下面的文件是JavaBean文件;
servlet包下面的文件是一些请求文件;
最后AppContext文件是本项目需要用到的一些常亮;

6.首先是AppContext.java文件

package cn.it.yiban;

public class AppContext {

    public static final String APP_ID = "dbde49cbca84c6a9";

    public static final String APP_SEC = "00b7eb3efa1703e35a18ebce0637696c";

    public static final String WEB_SITE = "http://127.0.0.1:8080/yiban_demo";

    public static final String BACK_URL = "http://127.0.0.1:8080/yiban_demo/auth";

    public static final String KEY_CODE = "code";

    public static final String KEY_TOKEN = "access_token";

    public static final String KEY_USER = "user";

    public static final String KEY_USER_ID = "user_id";

    public static String ACCESS_TOKEN = "access_token";

}

这里分别把刚刚申请的APPID和APPSECRET以及网站地址、回调地址写作常量方便我们后面调用;

7.然后就是项目首页index.jsp,就是一个简单的登录按钮;

<a href="/yiban_demo/init">点击登录</a>

登录按钮跳转到请求授权的页面,也就是init请求,对应的Servlet文件是InitializionServlet.java;

package cn.it.yiban.servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import cn.it.yiban.AppContext;
import cn.yiban.open.Authorize;

@WebServlet("/init")
public class InitilizionServlet extends HttpServlet {

    /**
     * 
     */
    private static final long serialVersionUID = 4634124722565801643L;

    @Override
    protected void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {

        Authorize authorize = new Authorize(AppContext.APP_ID, AppContext.APP_SEC);
        String url = authorize.forwardurl(AppContext.BACK_URL, "QUERY", Authorize.DISPLAY_TAG_T.MOBILE);

        res.sendRedirect(url);
    }

}

根据官方wiki上的说法,授权的步骤要先根据应用的APPID和APPSEC来创建一个Authorize对象,然后重定向到授权页面;

8.然后就是比较重要的地方了,这里就会用到刚刚填写的回调地址了,开放平台会在你授权完成后跳转回你刚才填写的回调地址上,并且会携带一些数据回来,我们需要在回调地址的请求里对返回来的数据做一些请求。

现在,我们新建一个Servlet,取名为AuthorizetionServlet.java,并且设定访问路径为“/auth”,然后把这个路径设置到我们创建的应用里。

java给第三方提供接口的方法 java接入第三方sdk_易班_03

也就是最开始的授权回调地址这一栏了。
于是,在这个请求里面就可以获取到一个json数据,里面有一个code,通过这个code来获取access_token就可以了;

以下是AuthorizetionServlet.java:

package cn.it.yiban.servlet;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;

import cn.it.yiban.AppContext;
import cn.yiban.open.Authorize;
import cn.yiban.open.common.User;

@WebServlet("/auth")
public class AuthorizationServlet extends HttpServlet {

    /**
     * 
     */
    private static final long serialVersionUID = 636593132245602772L;

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        String code = req.getParameter(AppContext.KEY_CODE);
        if (code == null || code.equals("")) {
            resp.sendRedirect("/yiban_demo/index.html");
        }
        System.out.println(code);

        Authorize authorize = new Authorize(AppContext.APP_ID, AppContext.APP_SEC);
        String text = authorize.querytoken(code, AppContext.BACK_URL);

        System.out.println(text);
        JSONObject json = JSON.parseObject(text);
        AppContext.ACCESS_TOKEN = json.getString(AppContext.KEY_TOKEN);

        User user = new User(AppContext.ACCESS_TOKEN);
        HttpSession session = req.getSession();
        session.setAttribute(AppContext.KEY_USER, user);

        resp.sendRedirect("http://127.0.0.1:8080/yiban_demo/index.html");
    }

}

这里就主要是回调地址这里有点绕,我也是边看官方的demo边做断点调试才弄好的。获取到access_token后,我们就可以根据这个token来调用开放平台上的一些借口,以及做一些查询了。

好了,这篇博客的内容就这么多,欢迎大家纠错指正。
最后,附上源码https://github.com/phw-nightingale/yiban_demo
要是觉得好别忘记加star哦~