您的位置:首页 > 运维架构 > 网站架构

易班开放平台第三方网站接入的Demo(Java_SDK)的步骤

2017-10-15 16:39 471 查看
前言:最近需要做一个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.前面的信息随便填,比较重要的是后面的网站地址;



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

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



首先,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”,然后把这个路径设置到我们创建的应用里。



也就是最开始的授权回调地址这一栏了。

于是,在这个请求里面就可以获取到一个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哦~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: