关于这篇文章:

笔者近期和小伙伴接了校方的一个小小小项目,要求使用易班APP的账号,这意味着需要调用易班官方的登录API。下面介绍使用java语言作为后端,在自己的网站如何接入易班的登录API(轻应用、移动应用的操作大同小异)。(关于改造成前后端分离式开发,详见后续文章)

文章目录

关于这篇文章:

申请成为开发者账号

创建应用接入

下载易班JAVA的SDK示例及介绍

创建Web项目

启动自己的web项目

授权测试

关于JCE报错:

申请成为开发者账号

第一步:登录易班开放平台网站:https://o.yiban.cn/ 第二步:进入个人中心:

java怎么获取当前登录用户的id java获取当前登录人_API

第三步:按照标题填写好个人信息进去就好。

java怎么获取当前登录用户的id java获取当前登录人_java怎么获取当前登录用户的id_02

然后就坐等两三天左右的消息回馈就好啦!

java怎么获取当前登录用户的id java获取当前登录人_API_03

创建应用接入

为了演示方便,我们这次创建网站接入。

第一步:进入管理中心,点击绿色按钮“创建网站接入”。

第二步:填写基本信息,这一步按照标题提示填写就好啦;

java怎么获取当前登录用户的id java获取当前登录人_JSP_04

第三步:填写开发信息。

主要是这三个信息:网站地址、维护地址和授权回调地址。以下是我自己的设置,大家可根据自己的需要自行调整:

java怎么获取当前登录用户的id java获取当前登录人_java_05

网站地址就是:写你本机的地址和运行这个网站的端口号。 维护地址可不填 授权回调地址就是:你调用易班登录API进入易班的官方登录页面成功后浏览器跳回哪个页面(你自己的页面) 创建应用成功后,就会生成两个重要的信息:AppID和AppSecret,分别对应易班官方给你这个应用唯一的应用ID和应用秘钥。

java怎么获取当前登录用户的id java获取当前登录人_易班_06

到这一步,你已经拥有自己的测试权限了。

下载易班JAVA的SDK示例及介绍

第一步:进入易班开放平台的文档中心:易班开放平台wiki文档 第二步:下载我们需要的SDK(这次介绍java的那就下载JAVA对应的SDK),解压它(里面的文档大家有兴趣就自行查看哈,这里就不作重复介绍了)。

java怎么获取当前登录用户的id java获取当前登录人_API_07

创建Web项目

(我这里不小心点到了maven项目,但是不影响,我依然会以官方文档的介绍方式给大家做示例)

第一步:配置tomcat,和你刚才填写的开发信息要一致(配置tomcat的具体步骤我就跳过了哈):

java怎么获取当前登录用户的id java获取当前登录人_API_08

第二步:导入易班官方给的依赖包(这个在SDK包里的两个lib文件夹里),全部导入到项目中(后续文章再介绍用maven管理的方式导入)

java怎么获取当前登录用户的id java获取当前登录人_java怎么获取当前登录用户的id_09

java怎么获取当前登录用户的id java获取当前登录人_易班_10

java怎么获取当前登录用户的id java获取当前登录人_JSP_11

第三步:导入官方示例页面及配套代码(这个页面做测试的时候用,后面再换成自己的页面就好了),用这三个即可,

java怎么获取当前登录用户的id java获取当前登录人_API_12

特殊说明:这里我为了方便把官方的代码移动到根目录的src文件夹了,这个大家怎么舒服怎么来就好。

java怎么获取当前登录用户的id java获取当前登录人_API_13

第四步:搭建跳转易班官方登录页面的jsp。

这个请求方式官方没有直接给.jsp我们,但是把代码放在了

YBApi_sdk_java\YBApi_sdk_java_20150820\doc这个文档里的“易班开放平台接入新手教程(Java版).docx”文档。

文档对应的部分如下:

java怎么获取当前登录用户的id java获取当前登录人_java_14

我们创建一个authorize.jsp文件(为了方便我直接放在根目录了),然后把示例代码给复制进来,那三个参数就是刚才生成的应用官方给你的ID和秘钥。

java怎么获取当前登录用户的id java获取当前登录人_java怎么获取当前登录用户的id_15

第五步:修改Authorization.java文件,把授权成功后跳回的页面路径是不是官方给我们的index.html页面。

java怎么获取当前登录用户的id java获取当前登录人_java_16

还有这里:

授权失败的跳转那里全部都要记得加上return;不然会报多次跳转的异常,授权失败的地址修改成开头的请求官方登录页面的那个authorize.jsp。

java怎么获取当前登录用户的id java获取当前登录人_JSP_17

第六步:配置web.xml

这个xml文件就在官方文档的WEB-INF文件夹里,刚才已经复制进来了。如果你像我一样换了官方的servlet和util的位置,你就改一下划红线的类位置就行。

java怎么获取当前登录用户的id java获取当前登录人_JSP_18

设置初始启动的页面:

还记得刚才我们创建的authorize.jsp文件吗?那里用到了response.sendRedirect();,说明这个文件的作用就是将我们的ID和秘钥以及回调地址发给易班官方,如果匹配就返回官方登录的页面给我们,我们用自己的易班登录页面登录后就浏览器跳转回我们的回调地址。为了方便我们只需要在web.xml设置一下服务器启动就打开authorize.jsp,在web.xml文件里加入这句话即可:

java怎么获取当前登录用户的id java获取当前登录人_API_19

启动自己的web项目

一打开,就发现自动跳转到官方登录界面了!这说明,我们的authorize.jsp里的代码工作正常,那个返回的url地址对应的就是官方登录页面的地址以及其他参数。

java怎么获取当前登录用户的id java获取当前登录人_API_20

java怎么获取当前登录用户的id java获取当前登录人_易班_21

我们登录一下,然后就跳转到刚才自己设置的回调地址了。

授权测试

这个时候我们发现下面的按钮还是白色,这时候就要初始化一下我们本地的服务器(因为后续的一切调用API都是用我们的服务器后端去请求官方的API,而不是从前端请求)。

java怎么获取当前登录用户的id java获取当前登录人_java怎么获取当前登录用户的id_22

将刚才的ID和秘钥填进去,点“设定”。

java怎么获取当前登录用户的id java获取当前登录人_java_23

当第一个按钮变成绿色,说明本地服务器关于本应用参数已初始化成功!

然后,我们进行调用一下我们刚才servlet里的Authorization进行授权。还记得怎么调用Authorization吗?不记得就看一眼web.xml文件:

java怎么获取当前登录用户的id java获取当前登录人_java怎么获取当前登录用户的id_24

java怎么获取当前登录用户的id java获取当前登录人_API_25

噢,请求名就是auth,用get方法。那我们就可以直接将刚才登陆成功后生成的code拼到地址里,进行请求:

java怎么获取当前登录用户的id java获取当前登录人_API_26

当授权成功,自动跳回刚才官方给我们的测试页面,此时页面已经变成了这样:

java怎么获取当前登录用户的id java获取当前登录人_易班_27

这些接口都变成了绿色,说明我们的这些接口都可以用了。为了看调用接口后易班官方给我们返回来的信息,我们直接在后端进行输出吧(在Execution里修改就行):

java怎么获取当前登录用户的id java获取当前登录人_java_28

看一眼后端输出(我点了授权查询、基本信息和好友列表),后端输出这三行信息:

java怎么获取当前登录用户的id java获取当前登录人_API_29

至于其中每个字段对应的具体含义,去易班api那里查就好啦。

介绍完毕!敬请匹配指正!接下来我会另写一篇博客介绍如何在springboot框架下进行前后端分离开发式的调用易班官方登录功能。

关于JCE报错:

如果程序运行的时候后端报错:Could not initialize class javax.crypto.JceSecurity ,可以这么解决: 下载新的local_policy.jar和US_export_policy.jar, 替换本地的%JAVA_HOME% /jre/lib/sercurity/ 中的 local_policy.jar 和 US_export_policy.jar这两个依赖包(刚才下载的SDK里也有,但是易班文档给的那两个我用不了,换成新的我就能用了)。 如果你们的JDK版本是7,来这个地址下载:https://www.oracle.com/java/technologies/javase-jce7-downloads.html 如果你们的JDK版本是8,来这里下载:https://www.oracle.com/java/technologies/javase-jce8-downloads.html