1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/rnf-discuz-ucenter-api-for-java

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 10 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 30.11.2024 19:30 52c586a

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.

О лицензии GPL-2.0

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 (SSL) сайт

Если ваш сайт является 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 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/rnf-discuz-ucenter-api-for-java.git
git@api.gitlife.ru:oschina-mirror/rnf-discuz-ucenter-api-for-java.git
oschina-mirror
rnf-discuz-ucenter-api-for-java
rnf-discuz-ucenter-api-for-java
master