Подключение к форуму Vbulletin с помощью приложения для Android - PullRequest
0 голосов
/ 28 сентября 2011

Я пытаюсь создать небольшое приложение, которое подключается к форуму vbulletin для получения количества непрочитанных тем на панели пользователя.

Я нашел способ получения информации с веб-сайта, но проблема в том, что я не представляю, как войти на форум.

Может кто-нибудь дать мне совет или хотя бы ссылку, чтобы помочь мне начать?

Ответы [ 2 ]

0 голосов
/ 29 сентября 2011

Вам потребуется отправить запрос _POST через ваше приложение с именем пользователя и md5-хэшем пароля пользователя.Имя поля имени пользователя должно быть «vb_login_username», а имя поля пароля должно быть «vb_login_md5password».Как только вы поймете это, вы можете создать свою собственную страницу входа, с которой ваше приложение будет разговаривать.Вот что-то похожее на то, что я использую.При успешном входе в систему возвращается информация о пользователе в формате JSON.

require_once('./global.php');
require_once(DIR . '/includes/functions_login.php');

define("BADLOGIN"              , "You have entered an invalid username or password.");
define("BADLOGIN_STRIKES"      , "You have entered an invalid username or password. You have %s login attempts left, after which you will be unable to login for 15 minutes.");
define("BADLOGIN_STRIKES_ZERO" , "You have entered an invalid username or password and used up your failed login quota. Please wait 15 minutes before trying to login again.");

// ################################ start login #################################
if ($_POST['do'] == 'login') {

    $vbulletin->input->clean_array_gpc('p', array(
        'vb_login_username'        => TYPE_STR,
        'vb_login_password'        => TYPE_STR,
        'vb_login_md5password'     => TYPE_STR,
        'vb_login_md5password_utf' => TYPE_STR,
        'cookieuser'               => TYPE_BOOL,
    ));

    // can the user login?
    $strikes = verify_strike_status($vbulletin->GPC['vb_login_username']);

    // make sure our user info stays as whoever we were (for example, we might be logged in via cookies already)
    $original_userinfo = $vbulletin->userinfo;

    if (!verify_authentication(
        $vbulletin->GPC['vb_login_username'], $vbulletin->GPC['vb_login_password'], 
        $vbulletin->GPC['vb_login_md5password'], $vbulletin->GPC['vb_login_md5password_utf'], 
        $vbulletin->GPC['cookieuser'], true)) 
    {       
        exec_strike_user($vbulletin->userinfo['username']);

        // load original user
        $vbulletin->userinfo = $original_userinfo;

        if ($vbulletin->options['usestrikesystem'])
        {
            if ((5 - $strikes) == 0)
            {
                die(json_encode(array(
                    'hasErrors' => (int) 1,
                    'errorMsg'  => BADLOGIN_STRIKES_ZERO
                ))); 
            }
            else
            {
                die(json_encode(array(
                    'hasErrors' => (int) 1,
                    'errorMsg'  => sprintf(BADLOGIN_STRIKES, 5 - $strikes)
                ))); 
            }
        }
        else
        {
            die(json_encode(array(
                'hasErrors' => (int) 1,
                'errorMsg'  => BADLOGIN
            ))); 
        }
    }

    exec_unstrike_user($vbulletin->GPC['vb_login_username']);

    // create new session
    process_new_login($vbulletin->GPC['logintype'], $vbulletin->GPC['cookieuser'], $vbulletin->GPC['cssprefs']);
    $userinfo = fetch_user($vbulletin->userinfo['userid']);

    // is banned user?
    if ($userinfo['usergroupid'] == 8) {
        process_logout();
    }

    // return userinfo
    die(json_encode(array(
        'success' => (int) 1,
        'user'    => $userinfo
    ))); 
}

Надеемся, это поможет вам начать работу.Кстати, задайте для имени поля cookieuser значение true, и пользователь будет запомнен при следующем запросе.

0 голосов
/ 28 сентября 2011

Существует несколько способов авторизации на веб-сайте: авторизация через форму, аутентификация через http, авторизация через AJAX и т. Д.

Проверьте http-соединения (например, Firefox с Firebug может видеть соединения), чтобы увидеть, какое соединение устанавливается при нажатии кнопки входа на сайте.

...