#include "network/networkcookiejar.h"
#include "situareservice/situarecommon.h"
#include "ui/facebookloginbrowser.h"
+#include "ui/mainwindow.h"
#include "facebookauthentication.h"
const QString FB_LOGIN_SUCCESS_URL = "http://www.facebook.com/connect/login_success.html";
const QString FB_LOGIN_URL = "https://www.facebook.com/login.php";
-FacebookAuthentication::FacebookAuthentication(QObject *parent)
+FacebookAuthentication::FacebookAuthentication(MainWindow *mainWindow, QObject *parent)
: QObject(parent),
- m_browser(0)
+ m_browser(0),
+ m_mainWindow(mainWindow)
{
qDebug() << __PRETTY_FUNCTION__;
}
{
qWarning() << __PRETTY_FUNCTION__;
- ///< @todo (HIGH) Is newer called!
-
m_browser = 0;
}
{
qWarning() << __PRETTY_FUNCTION__;
- emit buildLoginBrowser();
+ if (!m_browser)
+ m_browser = new FacebookLoginBrowser(m_mainWindow);
+
+ if (m_browser) {
+ connect(m_browser, SIGNAL(loadFinished(bool)),
+ this, SLOT(loadFinished(bool)));
+
+ connect(m_browser, SIGNAL(urlChanged(QUrl)),
+ this, SLOT(urlChanged(QUrl)));
+
+ connect(m_browser, SIGNAL(destroyed(QObject*)),
+ this, SLOT(browserDestroyed()));
+
+ connect(m_browser->page()->networkAccessManager(), SIGNAL(finished(QNetworkReply*)),
+ this, SLOT(networkReplyHandler(QNetworkReply*)));
+
+ QString url = FB_LOGIN_URL + "?";
+ url.append("api_key=" + API_KEY +"&");
+ url.append("display=touch&");
+ url.append("fbconnect=1&");
+ url.append("next=" + FB_LOGIN_SUCCESS_URL + "&");
+ url.append("return_session=1&");
+ url.append("session_version=3&");
+ url.append("v=1.0&");
+ url.append("req_perms=publish_stream");
+
+ m_browser->load(QUrl(url));
+ }
}
void FacebookAuthentication::networkReplyHandler(QNetworkReply *reply)
return QString();
}
-void FacebookAuthentication::setBrowser(FacebookLoginBrowser *browser)
-{
- qWarning() << __PRETTY_FUNCTION__;
-
- m_browser = browser;
-
- if (m_browser) {
- connect(m_browser, SIGNAL(loadFinished(bool)),
- this, SLOT(loadFinished(bool)));
-
- connect(m_browser, SIGNAL(urlChanged(QUrl)),
- this, SLOT(urlChanged(QUrl)));
-
- connect(m_browser, SIGNAL(destroyed(QObject*)),
- this, SLOT(browserDestroyed()));
-
- connect(m_browser->page()->networkAccessManager(), SIGNAL(finished(QNetworkReply*)),
- this, SLOT(networkReplyHandler(QNetworkReply*)));
-
- QString url = FB_LOGIN_URL + "?";
- url.append("api_key=" + API_KEY +"&");
- url.append("display=touch&");
- url.append("fbconnect=1&");
- url.append("next=" + FB_LOGIN_SUCCESS_URL + "&");
- url.append("return_session=1&");
- url.append("session_version=3&");
- url.append("v=1.0&");
- url.append("req_perms=publish_stream");
-
- m_browser->load(QUrl(url));
- }
-}
-
void FacebookAuthentication::urlChanged(const QUrl &url)
{
qWarning() << __PRETTY_FUNCTION__ << url.toString();
if (!url.toString().contains("session={")) {
// url parameter doesn't contain session data, so login with cookies failed
qWarning() << __PRETTY_FUNCTION__ << "working credentials required";
- m_browser->show();
+ m_mainWindow->buildLoginDialog(m_browser);
} else if (url.toString().startsWith(FB_LOGIN_SUCCESS_URL)) {
// login succeeded
const QString session = parseSession(url);
qWarning() << __PRETTY_FUNCTION__ << "login finished, parsed session:" << session;
- if (!session.isEmpty())
+ if (!session.isEmpty()) {
+ m_mainWindow->destroyLoginDialog();
+ m_browser->deleteLater();
emit loggedIn(session);
+ }
}
else {
qWarning() << __PRETTY_FUNCTION__ << "credentials accepted, getting the access_token";