如何使用java调用易班登录API获取个人账号信息(一)

2023-11-01

关于这篇文章:

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

申请成为开发者账号

第一步:登录易班开放平台网站:https://o.yiban.cn/
第二步:进入个人中心:
在这里插入图片描述
第三步:按照标题填写好个人信息进去就好。
在这里插入图片描述
然后就坐等两三天左右的消息回馈就好啦!
在这里插入图片描述

创建应用接入

为了演示方便,我们这次创建网站接入。
第一步:进入管理中心,点击绿色按钮“创建网站接入”。
第二步:填写基本信息,这一步按照标题提示填写就好啦;
在这里插入图片描述

第三步:填写开发信息。
主要是这三个信息:网站地址、维护地址和授权回调地址。以下是我自己的设置,大家可根据自己的需要自行调整:在这里插入图片描述

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

在这里插入图片描述
到这一步,你已经拥有自己的测试权限了。

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

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

创建Web项目

(我这里不小心点到了maven项目,但是不影响,我依然会以官方文档的介绍方式给大家做示例)
第一步:配置tomcat,和你刚才填写的开发信息要一致(配置tomcat的具体步骤我就跳过了哈):
在这里插入图片描述
第二步:导入易班官方给的依赖包(这个在SDK包里的两个lib文件夹里),全部导入到项目中(后续文章再介绍用maven管理的方式导入)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
第三步:导入官方示例页面及配套代码(这个页面做测试的时候用,后面再换成自己的页面就好了),用这三个即可,
在这里插入图片描述

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

第四步:搭建跳转易班官方登录页面的jsp。
这个请求方式官方没有直接给.jsp我们,但是把代码放在了
YBApi_sdk_java\YBApi_sdk_java_20150820\doc这个文档里的“易班开放平台接入新手教程(Java版).docx”文档。
文档对应的部分如下:
在这里插入图片描述
我们创建一个authorize.jsp文件(为了方便我直接放在根目录了),然后把示例代码给复制进来,那三个参数就是刚才生成的应用官方给你的ID和秘钥。
在这里插入图片描述
第五步:修改Authorization.java文件,把授权成功后跳回的页面路径是不是官方给我们的index.html页面。
在这里插入图片描述
还有这里:
授权失败的跳转那里全部都要记得加上return;不然会报多次跳转的异常,授权失败的地址修改成开头的请求官方登录页面的那个authorize.jsp。
在这里插入图片描述

第六步:配置web.xml
这个xml文件就在官方文档的WEB-INF文件夹里,刚才已经复制进来了。如果你像我一样换了官方的servlet和util的位置,你就改一下划红线的类位置就行。
在这里插入图片描述
设置初始启动的页面:
还记得刚才我们创建的authorize.jsp文件吗?那里用到了response.sendRedirect();,说明这个文件的作用就是将我们的ID和秘钥以及回调地址发给易班官方,如果匹配就返回官方登录的页面给我们,我们用自己的易班登录页面登录后就浏览器跳转回我们的回调地址。为了方便我们只需要在web.xml设置一下服务器启动就打开authorize.jsp,在web.xml文件里加入这句话即可:
在这里插入图片描述

启动自己的web项目

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

在这里插入图片描述
我们登录一下,然后就跳转到刚才自己设置的回调地址了。

授权测试

这个时候我们发现下面的按钮还是白色,这时候就要初始化一下我们本地的服务器(因为后续的一切调用API都是用我们的服务器后端去请求官方的API,而不是从前端请求)。
在这里插入图片描述
将刚才的ID和秘钥填进去,点“设定”。
在这里插入图片描述

当第一个按钮变成绿色,说明本地服务器关于本应用参数已初始化成功!
然后,我们进行调用一下我们刚才servlet里的Authorization进行授权。还记得怎么调用Authorization吗?不记得就看一眼web.xml文件:
在这里插入图片描述
在这里插入图片描述

噢,请求名就是auth,用get方法。那我们就可以直接将刚才登陆成功后生成的code拼到地址里,进行请求:
在这里插入图片描述
当授权成功,自动跳回刚才官方给我们的测试页面,此时页面已经变成了这样:
在这里插入图片描述

这些接口都变成了绿色,说明我们的这些接口都可以用了。为了看调用接口后易班官方给我们返回来的信息,我们直接在后端进行输出吧(在Execution里修改就行):
在这里插入图片描述
看一眼后端输出(我点了授权查询、基本信息和好友列表),后端输出这三行信息:
在这里插入图片描述
至于其中每个字段对应的具体含义,去易班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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用java调用易班登录API获取个人账号信息(一) 的相关文章

  • Swagger 3.0.0:如果没有 SwaggerConfig 和 @Profile,则无法在生产中禁用

    我正在从 2 x 升级到 SpringFox Swagger 3 0 0 它引入了 Spring Boot 启动器springfox boot starter消除了对基于 2 x 的需要的依赖性SwaggerConfig NO LONGER
  • Spring Rest-API - 403 禁止错误响应

    我是 Spring 新手 我正在编写 REST API 我收到 403 删除 放置禁止错误 以下是我正在处理的示例 RequestMapping value noteId method RequestMethod PUT public Re
  • 无法让远程 EJB 与 Wildfly 上的 EJB 客户端 API 配合使用

    我目前正在努力让远程 EJB 调用在 wildfly 8 x 和 9 x 上工作 详细来说 它是关于使用 EJB 客户端 API 方法从独立客户端应用程序 而不是从另一个应用程序服务器 进行远程调用 远程命名方法适用于我 但不适用于我的场景
  • Spring Rest POST Json RequestBody 不支持内容类型

    当我尝试使用 post 方法发布新对象时 RequestBody 无法识别 contentType Spring 已经配置完毕 POST 可以与其他对象一起使用 但不能与这个特定对象一起使用 org springframework web
  • 如何限制用户键入时 JTextPane 中的字符数 (Java)

    我需要不允许在输入 X 后输入任何字符 我需要在输入 X 个字符后发出蜂鸣声 我知道如何在用户按 Enter 键后执行此操作 但我需要在用户按 Enter 键之前执行此操作 我从 Oracle 站点找到的方法是将 DocumentSizeF
  • 将 API 数据存储到 DataFrame 中

    我正在运行 Python 脚本来从 Interactive Brokers API 收集金融市场数据 连接到API后 终端打印出请求的历史数据 如何将数据保存到数据帧中而不是在终端中流式传输 from ibapi wrapper impor
  • Android - 内容值覆盖现有行

    我正在尝试使用插入值ContentValues 我已将 5 个值插入到 5 列中 运行应用程序后 我只有最后一组值的行ContentValues 前四组未插入 ContentValues cv new ContentValues cv pu
  • Log4j 未使用属性文件找到自定义附加程序

    我正在尝试使用以下 XML 属性文件在 Eclipse 插件项目中配置 log4j 其中包括一个名为 EclipseLoggingAppender 的自定义附加程序
  • JavaPreparedStatementUTF-8字符问题

    我有一份准备好的声明 PreparedStatement st 在我的代码中 我尝试使用 st setString 方法 st setString 1 userName userName 的值为 ak a setString 方法将 ak
  • Ubuntu 的打包 - Web 应用程序

    Web 应用程序没有与 C 或类似文件不同的 make 文件 但是 它需要放置在特定的目录中 例如 var www 我是 Linux 打包新手 所以我的问题是 如何将我的应用程序打包到 deb 中 以便在安装时将其放入 etc myprog
  • 当另一个线程发生事情时从主线程获取数据?

    目前我有一个线程正在运行一个侦听连接的套接字 当它收到连接时 它需要上传在主线程中收集的数据 即从主线程获取数据 但是 我传递了对象的实例 但它从未使用等待连接时收集的数据进行更新 有没有正确的方法来做到这一点 我用谷歌搜索了一下 似乎找不
  • 使用 Mockitos 传递参数化输入

    我正在使用 Mockito 进行单元测试 我想知道是否可以使用 Junit 测试中的方式发送参数化输入参数 e g InjectMocks MockClass mockClass new MockClass Test public void
  • 如何强制初始化 Hibernate JPA 代理以在 JSON 调用中使用它

    我有一个 Spring 3 JPA 2 0 应用程序 在我的 Controller我需要一个初始化的对象 但我有代理 我需要能够以编程方式初始化它 我需要类似的功能org hibernate Hibernate initialize Obj
  • Jar Manifest 文件的使用混乱

    我正在阅读使用 jar 工具打包 java 应用程序 我注意到 META INF 目录下创建了一个清单文件 对于一个简单的应用程序来说 感觉它没有任何作用 我在 stackoverflow 上搜索以了解 Manifest 文件的用法 我碰到
  • 如何映射 Map

    I tried ManyToMany cascade CascadeType ALL Map
  • Java Calendar.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY),它会向后滚动、向前滚动还是未知?

    假设以下代码在 2009 年 8 月 22 日 星期六 执行 Calendar c Calendar getInstance c set Calendar DAY OF WEEK Calendar SUNDAY c get Calendar
  • 如何使用 AEM 解析 org.apache.http.ssl?

    最终 我尝试在 Java 代码中使用 AWS S3 库来通过 AEM 启用服务器端 S3 上传 但在安装依赖项和 或由 AEM 识别时遇到了问题 每次我添加新的依赖项时 都会弹出五个问题 在我尝试构建的这个包中 这是我看到的错误 The i
  • 在测试期间调用预定方法[重复]

    这个问题在这里已经有答案了 我正在使用 Maven 开发 SpringBoot 应用程序 我有一个班级 Component有方法的注释m与 Scheduled initialDelay 1000 fixedDelay 5000 注解 这里f
  • Java applet 是否会违反同源策略

    我需要请求一些东西并从其他域获取信息 我知道由于同源政策 javascript 无法做到这一点 我的另一个选择是通过我的服务器发出代理请求 我不希望请求来自我的服务器的 IP 也不想为我的服务器创建额外的负载 并且希望客户端这样做 是否可以
  • 生成签名和加密的 JWT

    我正在尝试使用生成签名和加密的 JWT 令牌雨云智威汤逊 http connect2id com products nimbus jose jwt private void generateToken throws JOSEExceptio

随机推荐

  • 谁还在AI焦虑?

    时至今日 人们对GPT 为首的诸多AI 大有热情消退的迹象 与2个月前相比 简直恍如隔世 这也进步一部印证了 山洞隐喻 人类始终对未知充满恐惧和焦虑 曾经人们忧心忡忡 整天讨论AI 取代人类工作之后 大家应该何去何从 AI入侵人类社会 大家
  • PooledConnection has already been closed.

    PooledConnection has already been closed java sql SQLException PooledConnection has already been closed 数据库链接被关闭 排查被关闭的原
  • 何恺明团队最新力作RegNet:超越EfficientNet,GPU上提速5倍,这是网络设计新范式

    鱼羊 十三 发自 凹非寺量子位 报道 公众号 QbitAI 大神 组团 出奇招 踢馆各路神经网络 还是熟悉的团队 还是熟悉的署名 Facebook AI实验室 推陈出新挑战新的网络设计范式 嗯 熟悉的Ross 熟悉的何恺明 他们带来全新的
  • 九十四.深入递归(一)

    题一 走楼梯 有个小孩正上楼梯 楼梯有n阶台阶 小孩一次可以上1阶 2阶 3阶 请实现一个方法 计算小孩有多少种上楼的方式 为了防止溢出 请将结果Mod 1000000007 给定一个正整数int n 请返回一个数 代表上楼的方式数 保证n
  • 查询与进程调度(CFS)相关信息

    目录 查询与进程相关的调度信息 查看CFS调度信息 CPU相关的信息 CFS就绪队列的总运行时间 实时队列与deadline调度的相关信息 所有进程相关的信息 查询与进程相关的调度信息 进程的nice值 优先级 调度策略 vruntime等
  • fastdfs安装部署整理

    一 fastdfs环境搭建 下面准备 2 个环境模拟部署并测试 准备工作 主服务器 192 168 100 10 从服务器 192 168 100 11 步骤1 了解 fastDFS 原理 这次是最简单的 storage 同步 不涉及多 t
  • SQL Part 1 --- 简单的SQL查询

    SQL 简单的SQL查询 SQL中的数据类型 SQL中的表 Tables 简单的SQL查询 简单SQL查询的执行步骤 在查询中链接多个表 复杂SQL查询的执行步骤 Banking Example SQL中的数据类型 Characters C
  • spring security oauth2——AbstractAuthenticationProcessingFilter

    AbstractAuthenticationProcessingFilter的作用 abstractAuthenticationProcessingFilter的职责也就非常明确 处理所有HTTP Request和Response对象 并将
  • 通过zipkin来追踪调用链

    最近被一个问题困扰了两天 一个接口突然就特别慢 差不多要两分多钟才能返回 找问题一直没有头绪 项目采用的是springcloud微服务框架 服务之间的调用链特别的多 就算是看日志也不知道看哪一个日志 很难定位到问题所在 后来问同事 同事说看
  • 多媒体视频处理的一些基本概念

    1 帧 在最早的电影里面 一幅静止的图像被称做一 帧 Frame 影片里的画面是每一秒钟有24帧 为什么是24帧 这个数字是怎么来的 因为人类眼睛的视觉暂留现象正好符合每秒24帧的标准 所以用多也没有意义还会浪费电影胶片 增加成本 所以就是
  • python3 面向对象编程知识点介绍

    python3 面向对象编程介绍 简阶 第1章 面向对象设计 第2章 Python 对象 第3章 对象相似时 第4章 异常捕获 第5章 何时使用面向对象编程 第6章 Python 数据结构 第7章 Python 面向对象的捷径 python
  • 【数据库】往数据库中赋值时出现“Data too long for colum ‘XXX‘ at row 1”的解决方案之一

    说明 我直接用insert给表格的字段赋值时 某个变量出现了 Data too long for colum XXX at row 1 的错误 然后网上找了一堆教程 其实不对 首先你应该看 出现问题的这个字段是什么类型 出现问题的这个字段是
  • linux 网络编程

    linux网络编程 一 网络编程概述 1 概述 2 TCP UDP 3 端口号作用 二 字节序 三 socket编程步骤 四 linux提供的API简析 1 连接协议 2 连接地址 3 地址转换API 4 监听 5 连接 6 数据收发 7
  • Mysql 创建触发器 学习教程

    触发器 trigger 监视某种情况 并触发某种操作 触发器经常用于加强数据的完整性约束和业务规则等 触发器创建语法四要素 1 监视地点 table 2 监视事件 insert update delete 3 触发时间 after befo
  • 使用FORCE训练的脉冲神经网络中的监督学习(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 1 1第一代神经网络 1 2 第二代神经网络 BP 神经网络 1 3 第三代神经网络 脉冲神经网络 2 运
  • CentOS下CGAL开发环境配置

    目录 1 必要的说明 1 1 简介 1 2 软件安装说明 2 依赖软件安装 2 1 GMP MPFR MPC GCC 2 2 Boost 2 3 CMake 2 4 Qt 3 CGAL 4 测试 4 1 构建一个Example 4 2 使用
  • WebSell管理工具--中国蚁剑安装教程以及初始化

    简介 中国蚁剑是一款开源的跨平台WebShell网站管理工具 蚁剑的下载安装 GitHub项目地址 https github com AntSwordProject Windows下载安装 百度网盘下载链接 链接 https pan bai
  • vue配置别名

    在项目根目录下新建vue config js文件 添加类似如下代码 表示src目录 module exports configureWebpack resolve alias components components common com
  • Cesium源码结构及说明

    文章目录 目录 文章目录 前言 一 Cesium源码结构 二 源码编译 1 安装npm 2 开始编译 总结 前言 前面提了一些Cesium大概情况 本章主要讲述Cesium源码结构及说明 提示 以下是本篇文章正文内容 下面案例可供参考 一
  • 如何使用java调用易班登录API获取个人账号信息(一)

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