2011-09-28 57 views
0

我试图制作一个连接到vbulletin论坛的小应用,以检索用户面板中未读主题的数量。使用Android应用连接到Vbulletin论坛

我发现如何从网站中检索信息,但问题是我不知道如何登录论坛。

有人可以给我一个建议或至少一个链接,以帮助我开始?

回答

0

有几种方式登录到网站:登录表单,HTTP认证,通过AJAX登录等。

你需要调查登录如何在您的特定部位的情况下完成的。

检查http连接(例如,使用Firebug的Firefox可以看到连接),以查看单击网站上的登录按钮时进行的连接。

+0

我不确定...网站上的表单有提交网站操作:'

' – jullebarge

+0

所以这是一个http POST,另外还有密码的MD5散列。 –

+0

http://stackoverflow.com/questions/6772940/http-post-request-for-android –

0

您需要通过您的应用程序发送一个带用户名和用户密码的md5散列的_POST请求。用户名字段名称应该是“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,并且下次请求时用户将被记住。