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

前言:最近需要做一个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哦~

  • 13
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
以下是一个使用Java编写的CGI网关调用第三方接口的示例: ```java import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLEncoder; import java.util.HashMap; import java.util.Map; public class ThirdPartyCGI { public static void main(String[] args) throws IOException { // 设置第三方接口的URL String url = "https://thirdparty.com/api"; // 设置请求参数 Map<String, String> params = new HashMap<>(); params.put("param1", "value1"); params.put("param2", "value2"); // 发送POST请求 String response = sendPostRequest(url, params); // 处理响应结果 System.out.println(response); } /** * 发送POST请求 * @param url 请求URL * @param params 请求参数 * @return 响应结果 * @throws IOException */ private static String sendPostRequest(String url, Map<String, String> params) throws IOException { // 创建URL对象 URL obj = new URL(url); // 创建连接对象 HttpURLConnection con = (HttpURLConnection) obj.openConnection(); // 设置请求方法 con.setRequestMethod("POST"); // 设置请求头 con.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); // 开启输出流 con.setDoOutput(true); // 拼接请求参数 StringBuilder sb = new StringBuilder(); for (Map.Entry<String, String> entry : params.entrySet()) { sb.append(entry.getKey()).append("=").append(URLEncoder.encode(entry.getValue(), "UTF-8")).append("&"); } // 去掉最后一个"&" sb.setLength(sb.length() - 1); // 发送请求参数 con.getOutputStream().write(sb.toString().getBytes()); // 获取响应结果 BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream())); String inputLine; StringBuilder response = new StringBuilder(); while ((inputLine = in.readLine()) != null) { response.append(inputLine); } in.close(); // 返回响应结果 return response.toString(); } } ``` 在上面的示例中,我们使用了Java标准库中的`java.net.HttpURLConnection`类来发送HTTP请求,并使用`java.net.URLEncoder`类来对请求参数进行URL编码。您需要将`url`变量设置为第三方接口的URL,并将`params`变量设置为请求参数的映射。最后,我们调用`sendPostRequest`方法来发送POST请求,并获取响应结果。您可以根据自己的需要修改该示例以满足实际需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值