Hace ya unos días que no se actualizaba mis archivos en dropbox desde un script PHP que tengo hecho, al inspeccionar el script que se ejecutaba en crontab me he dado cuenta que el DropboxUploader habia dejado de funcionar arroja un error de «Login unsuccessful.»

Buscando, encontre que DropBox habia cambiado su formulario de login y por eso esta clase había dejado de funcionar. Pues nada, lo unico que hay que hacr para que esto siga funcionando con normalidad es modificar el método login de la clase DropboxUploader.

Antes teníamos esto:

protected function login() {
    $data = $this->request('https://www.dropbox.com/login');
    $data = $this->request('https://www.dropbox.com/login', true, array('login_email'=>$this->email, 'login_password'=>$this->password));
    if (stripos($data, 'location: /home') === false)
        throw new Exception('Login unsuccessful.');
    $this->loggedIn = true;
}

Pero ahora hay que cambiarlo por esto:

protected function login() {
    $data = $this->request('https://www.dropbox.com/login');
    $matches = array();
    $res = preg_match('#(.*)name=\"t\" value=\"(.*)\"(.*)#', $data, $matches);
    $data = $this->request('https://www.dropbox.com/login', true, array('login_email' => $this->email, 'login_password' => $this->password, 't' => $matches[2]));
    if(stripos($data, 'location: /home') === false)
        throw new Exception('Login unsuccessful.');
    $this->loggedIn = true;
}

y listo ya tenemos funcionando otra vez nuestro dropboxuploader