discuz-ucenter-api-for-java
Наилучший Java API интерфейс для Discuz UCenter, простой в использовании и полностью бесплатный!
Связанная статья: https://www.renfei.net/posts/1003429.
Сообщество: https://bbs.renfei.net/forum-44-1.html.
Этот проект перенесён с https://code.google.com/archive/p/discuz-ucenter-api-for-java / https://github.com/liangping/dzclient4j, спасибо первоначальному автору Лян Пин (no_ten@163.com) за то, что он открыл свой код.
Поскольку оригинальный проект уже очень старый, похоже, что это продукт 2009 года, но современные проекты используют Maven и SpringBoot для сборки, прямое конфигурирование сервлетов не подходит для современных проектов, поэтому я сделал некоторые изменения, чтобы упростить интеграцию программ, использующих Maven и SpringBoot.
GPLv2 имеет сильную заразность, выбор этого открытого исходного кода не был моим решением, а был сделан первоначальным автором при открытии исходного кода. Я должен следовать исходному открытому исходному коду.
Конечно, если вы не заботитесь о лицензионных соглашениях, вы можете игнорировать это.
Возможно, вы заметили, что имя пакета исходной программы com.fivestars было изменено мной на net.renfei.discuz.ucenter, потому что для публикации в центральном репозитории Maven требуется проверка владения доменом и цифровая подпись, поэтому я могу опубликовать только библиотеку net.renfei, чтобы избежать путаницы в проекте, я напрямую изменил имя пакета в исходном коде.
Ваша среда проекта должна быть JDK1.8 или выше. Base64 использует встроенную библиотеку Java8, исходный авторский собственный алгоритм Base64 был удалён. Моя среда компиляции также компилируется и публикуется в Java8.
Я использую Maven и SpringBoot для демонстрации. Добавьте зависимость в файл pom.xml:
<dependency>
<groupId>net.renfei</groupId>
<artifactId>discuz-ucenter-api-for-java</artifactId>
<version>1.0.7</version>
</dependency>
Если вы используете традиционный способ, вам нужно загрузить файл Jar и поместить его в папку lib. Загрузите по адресу: discuz-ucenter-api-for-java-1.0.7.jar.
Чтобы лучше интегрироваться со SpringBoot, я изменил исходный проект, который изначально модифицировал конфигурацию, и я изменил его на передачу параметров при создании экземпляра.
Если ваш сайт является HTTPS, вы должны использовать версию 1.0.6 или выше, старая версия не учитывала HTTPS, и я исправил код для совместимости с HTTPS.
Создайте экземпляр клиента net.renfei.discuz.ucenter.client.Client, параметры — это адрес интерфейса UCenter, IP-адрес, ключ связи, APPID и Connect.
Client client = new Client("http://localhost/uc_server", null, "key", "2","");
В исходном исходном коде регистрация сервлета выполняется через конфигурацию, но я перестроил его для проектов SpringBoot, поэтому регистрация сервлета через конфигурацию не очень удобна, и чтобы максимально снизить вмешательство в код, я использовал Controller для обработки HttpServletRequest и HttpServletResponse.
Сначала создайте Controller, затем создайте метод для обработки HttpServletRequest и HttpServletResponse, присвойте ему адрес запроса UCenter @RequestMapping("/api/uc.php"), создайте экземпляр клиента net.renfei.discuz.ucenter.api.UCClient и net.renfei.discuz.ucenter.client.Client, затем передайте HttpServletRequest в net.renfei.discuz.ucenter.api.UCClient.doAnswer() для обработки, наконец, запишите результат в HttpServletResponse, если конфигурация UCenter верна, вы сможете увидеть нормальное общение в UCenter. Конкретный пример использования:
@Controller
public class UCenterController {
@ResponseBody
@RequestMapping("/api/uc.php")
public void uc(HttpServletRequest request, HttpServletResponse response) throws IOException {
UCClient ucClient = new UCClient();
Client client = new Client("http://localhost/uc_server", null, "key", "2","");
String result = ucClient.doAnswer(client, request, response);
response.getWriter().print(result);
}
}
Если вы хотите обработать некоторую логику действий самостоятельно, просто наследуйте net.renfei.discuz.ucenter.api.UCClient, а затем переопределите и реализуйте метод doAnswer(Client client, HttpServletRequest request, HttpServletResponse response).
Client client = new Client("http://localhost/uc_server", null, "key", "2","");
String string = client.ucUserRegister("username","password","email");
Примечание: в тексте запроса присутствуют ссылки на внешние ресурсы, которые не были переведены. Синхронный вход
Client client = new Client("http://localhost/uc_server", null, "key", "2","");
int UID = 21; // Здесь указан пользовательский UID.
String string = client.ucUserSynlogin(uid);
Последовательный вход и синхронный вход
Client client = new Client("http://localhost/uc_server", null, "key", "2","");
// Вход
String result = client.ucUserLogin(uid);
LinkedList<String> rs = XMLHelper.ucUnserialize(result);
if(rs.size() > 0){
int uid = Integer.parseInt(rs.get(0));
String username = rs.get(1);
String password = rs.get(2);
String email = rs.get(3);
if(uid > 0) {
// Синхронный вход
String string = client.ucUserSynlogin(uid);
// Локальный код входа
// TODO ... ....
} else if(uid == -1) {
System.out.println("Пользователь не существует или был удалён.");
} else if(uid == -2) {
System.out.println("Неправильный пароль.");
} else {
System.out.println("Не определено.");
}
}else{
System.out.println("Ошибка входа.");
System.out.println(result);
}
В статье https://www.renfei.net/posts/1003429 в конце приведены часто задаваемые вопросы, которые возникли у пользователей при использовании этого кода.
Для получения дополнительной информации рекомендуется ознакомиться с исходным кодом. Здесь не будет проводиться демонстрация каждого аспекта. Вы можете задать вопросы или обсудить их на моём форуме: https://bbs.renfei.net/forum-44-1.html.
Если этот проект вам помог, пожалуйста, поддержите его, поставив звёздочку (Star). Я буду продолжать следить за проектом и обновлять его для проектов с большим количеством звёзд.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )