X-Git-Url: http://vcs.maemo.org/git/?a=blobdiff_plain;f=src%2Ffacebookservice%2Ffacebookauthentication.cpp;h=02d83eca6350c0c04711ad041b7a6d1e2448d864;hb=5ac73fbad15c9f09f4a9321751aa4e49cb404238;hp=12138950c0a34e55880eb9ad248d19448a47bc50;hpb=2555375bb3fb935f8007c50f89c647e19f187346;p=situare diff --git a/src/facebookservice/facebookauthentication.cpp b/src/facebookservice/facebookauthentication.cpp index 1213895..02d83ec 100644 --- a/src/facebookservice/facebookauthentication.cpp +++ b/src/facebookservice/facebookauthentication.cpp @@ -33,44 +33,76 @@ #include "facebookauthentication.h" #include "facebookcommon.h" -#include "../common.h" +#include "common.h" #include "parser.h" FacebookAuthentication::FacebookAuthentication(QObject *parent) : QObject(parent), - m_loginAttempts(0) + m_freshLogin(false) +{ + qDebug() << __PRETTY_FUNCTION__; + +} +void FacebookAuthentication::clearAccountInformation(bool keepUsername) { qDebug() << __PRETTY_FUNCTION__; - readCredentials(m_loginCredentials); + m_loginCredentials.clearCredentials(); + QSettings settings(DIRECTORY_NAME, FILE_NAME); + + if(!keepUsername) { + settings.remove(USERNAME); + settings.remove(SETTINGS_AUTOMATIC_UPDATE_ENABLED); + settings.remove(SETTINGS_AUTOMATIC_UPDATE_INTERVAL); + } + + settings.remove(COOKIES); + settings.remove(USER_UNSEND_MESSAGE); + settings.remove(USER_UNSEND_MESSAGE_PUBLISH); +} + +const QString FacebookAuthentication::loadUsername() +{ + qDebug() << __PRETTY_FUNCTION__; + + QSettings settings(DIRECTORY_NAME, FILE_NAME); + return settings.value(USERNAME, EMPTY).toString(); +} + +FacebookCredentials FacebookAuthentication::loginCredentials() const +{ + qDebug() << __PRETTY_FUNCTION__; + return m_loginCredentials; +} + +void FacebookAuthentication::saveUsername(const QString &username) +{ + qDebug() << __PRETTY_FUNCTION__; + + QSettings settings(DIRECTORY_NAME, FILE_NAME); + settings.setValue(USERNAME, username); } void FacebookAuthentication::start() { qDebug() << __PRETTY_FUNCTION__; - if (!verifyCredentials(m_loginCredentials)) { - QStringList list; - list.append(FACEBOOK_LOGINBASE); - list.append(SITUARE_PUBLIC_FACEBOOKAPI_KEY); - list.append(INTERVAL1); - list.append(SITUARE_LOGIN_SUCCESS); - list.append(INTERVAL2); - list.append(SITUARE_LOGIN_FAILURE); - list.append(FACEBOOK_LOGIN_ENDING); - - emit newLoginRequest(formLoginPageUrl(list)); + QSettings settings(DIRECTORY_NAME, FILE_NAME); + + QStringList cookies = settings.value(COOKIES).toStringList(); + if(!cookies.isEmpty()) { + emit loginUsingCookies(); } else { - emit credentialsReady(false, m_loginCredentials); + m_freshLogin = true; + emit newLoginRequest(); } - } bool FacebookAuthentication::updateCredentials(const QUrl &url) { - qDebug() << __PRETTY_FUNCTION__; + qDebug() << __PRETTY_FUNCTION__ << url.toString(); bool found = false; @@ -100,7 +132,8 @@ bool FacebookAuthentication::updateCredentials(const QUrl &url) if (!ok) { qFatal("An error occurred during parsing"); - exit (1); + emit error(SituareError::INVALID_JSON); + found = false; } qDebug() << "Session Key" << result[SESSION_KEY].toString(); m_loginCredentials.setSessionKey(result[SESSION_KEY].toString()); @@ -125,20 +158,23 @@ bool FacebookAuthentication::updateCredentials(const QUrl &url) } } found = true; + m_freshLogin = false; + emit saveCookiesRequest(); } - writeCredentials(m_loginCredentials); - emit credentialsReady(true, m_loginCredentials); + emit credentialsReady(m_loginCredentials); } else if ( callbackUrl.indexOf(LOGIN_FAILURE_REPLY) == 0){ qWarning() << "login failure" << endl; qDebug() << callbackUrl; - ++m_loginAttempts; - /* emit loginFailure for every second login attemps, since webview loads login - error page (loadingDone() signal is emitted) and we need to avoid that because - at this point we don't have new login parameters */ - if(m_loginAttempts % 2) { + clearAccountInformation(true); + if(m_freshLogin) { + emit error(SituareError::LOGIN_FAILED); emit loginFailure(); } + else { + m_freshLogin = true; + emit error(SituareError::SESSION_EXPIRED); + } } else if(callbackUrl.indexOf(LOGIN_PAGE) == 0) { qDebug() << "correct loginPage"; @@ -157,100 +193,3 @@ bool FacebookAuthentication::updateCredentials(const QUrl &url) } return found; } - -void FacebookAuthentication::writeCredentials(const FacebookCredentials &credentials) -{ - qDebug() << __PRETTY_FUNCTION__; - QSettings settings(DIRECTORY_NAME, FILE_NAME); - - settings.setValue(SESSION_KEY, credentials.sessionKey()); - settings.setValue(USER_ID, credentials.userID()); - settings.setValue(EXPIRES, credentials.expires()); - settings.setValue(SESSION_SECRET, credentials.sessionSecret()); - settings.setValue(SIGNATURE, credentials.sig()); -} - -void FacebookAuthentication::readCredentials(FacebookCredentials &credentialsFromFile) -{ - qDebug() << __PRETTY_FUNCTION__; - - QSettings settings(DIRECTORY_NAME, FILE_NAME); - - credentialsFromFile.setSessionKey(settings.value(SESSION_KEY, ERROR).toString()); - credentialsFromFile.setUserID(settings.value(USER_ID, ERROR).toString()); - credentialsFromFile.setExpires(settings.value(EXPIRES, ERROR).toString()); - credentialsFromFile.setSessionSecret(settings.value(SESSION_SECRET, ERROR).toString()); - credentialsFromFile.setSig(settings.value(SIGNATURE, ERROR).toString()); -} - - FacebookCredentials FacebookAuthentication::loginCredentials() const - { - qDebug() << __PRETTY_FUNCTION__; - return m_loginCredentials; - } - - bool FacebookAuthentication::verifyCredentials(const FacebookCredentials &credentials) const - { - qDebug() << __PRETTY_FUNCTION__; - - // if expires value is 0, then credentials are valid forever - if(credentials.expires() == "0") { - return true; - } - else { - const QString dateTimeFormat = "dd.MM.yyyy hh:mm:ss"; - QString expires = credentials.expires(); - QDateTime expireTime; - expireTime.setTime_t(expires.toInt()); - QString expiresString = expireTime.toString(dateTimeFormat); - qDebug() << expiresString.toAscii(); - - QDateTime currentTime; - currentTime = QDateTime::currentDateTime(); - QString currentTimeString = currentTime.toString(dateTimeFormat); - qDebug() << currentTimeString.toAscii(); - - return currentTime < expireTime; - } - } - - QUrl FacebookAuthentication::formLoginPageUrl(const QStringList &urlParts) const - { - qDebug() << __PRETTY_FUNCTION__; - - return QUrl(urlParts.join(EMPTY)); - } - - void FacebookAuthentication::saveUsername(const QString &username) - { - qDebug() << __PRETTY_FUNCTION__; - - QSettings settings(DIRECTORY_NAME, FILE_NAME); - settings.setValue(USERNAME, username); - } - - const QString FacebookAuthentication::loadUsername() - { - qDebug() << __PRETTY_FUNCTION__; - - QSettings settings(DIRECTORY_NAME, FILE_NAME); - return settings.value(USERNAME, EMPTY).toString(); - } - - void FacebookAuthentication::clearAccountInformation(bool keepUsername) - { - qDebug() << __PRETTY_FUNCTION__; - - m_loginCredentials.clearCredentials(); - QSettings settings(DIRECTORY_NAME, FILE_NAME); - if(!keepUsername) { - settings.remove(USERNAME); - } - settings.remove(USER_ID); - settings.remove(SESSION_KEY); - settings.remove(SESSION_SECRET); - settings.remove(EXPIRES); - settings.remove(SIGNATURE); - - emit credentialsChanged(m_loginCredentials); - }