Disconnect from facebook manually.

Added a button to disconnect from facebook.
This clears the webview cookies so it correctly
disconnects us from facebook, and clears the
access token.

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Tomaz Canabrava 2014-12-23 19:29:00 -02:00 committed by Dirk Hohndel
parent cc69e6ffa2
commit a7e148c0a8
3 changed files with 43 additions and 7 deletions

View file

@ -7,8 +7,15 @@
#include <QSortFilterProxyModel>
#include <QShortcut>
#include <QNetworkProxy>
#include <QNetworkCookieJar>
#include <QWebView>
static QString facebookConnectUrl =
"https://www.facebook.com/dialog/oauth?"
"client_id=427722490709000"
"&redirect_uri=http://www.facebook.com/connect/login_success.html"
"&response_type=token";
PreferencesDialog *PreferencesDialog::instance()
{
static PreferencesDialog *dialog = new PreferencesDialog(MainWindow::instance());
@ -28,21 +35,20 @@ PreferencesDialog::PreferencesDialog(QWidget *parent, Qt::WindowFlags f) : QDial
ui.proxyType->setCurrentIndex(-1);
// Facebook stuff:
QUrl urlLogin("https://www.facebook.com/dialog/oauth?"
"client_id=427722490709000"
"&redirect_uri=http://www.facebook.com/connect/login_success.html"
"&response_type=token");
QSettings settings;
settings.beginGroup("WebApps");
settings.beginGroup("Facebook");
if(settings.allKeys().contains("ConnectToken")){
ui.facebookWebView->setHtml("You are connected on Facebook, yey.");
ui.btnDisconnectFacebook->show();
} else {
ui.facebookWebView->setUrl(urlLogin);
ui.facebookWebView->setUrl(QUrl(facebookConnectUrl));
ui.btnDisconnectFacebook->hide();
}
connect(ui.facebookWebView, &QWebView::urlChanged, this, &PreferencesDialog::facebookLoginResponse);
connect(ui.btnDisconnectFacebook, &QPushButton::clicked, this, &PreferencesDialog::facebookDisconnect);
connect(ui.proxyType, SIGNAL(currentIndexChanged(int)), this, SLOT(proxyType_changed(int)));
connect(ui.buttonBox, SIGNAL(clicked(QAbstractButton *)), this, SLOT(buttonClicked(QAbstractButton *)));
@ -70,9 +76,22 @@ void PreferencesDialog::facebookLoginResponse(const QUrl &url)
settings.beginGroup("Facebook");
settings.setValue("ConnectToken", securityToken);
ui.facebookWebView->setHtml("We need a better 'you re connected' page. but, YEY. ");
ui.btnDisconnectFacebook->show();
}
}
void PreferencesDialog::facebookDisconnect()
{
QSettings settings;
settings.beginGroup("WebApps");
settings.beginGroup("Facebook");
settings.remove("ConnectToken");
ui.facebookWebView->page()->networkAccessManager()->setCookieJar(new QNetworkCookieJar());
ui.facebookWebView->setUrl(QUrl(facebookConnectUrl));
ui.btnDisconnectFacebook->hide();
}
#define DANGER_GF (gf > 100) ? "* { color: red; }" : ""
void PreferencesDialog::gflowChanged(int gf)
{
@ -168,6 +187,14 @@ void PreferencesDialog::setUiFromPrefs()
ui.proxyPassword->setText(prefs.proxy_pass);
ui.proxyType->setCurrentIndex(ui.proxyType->findData(prefs.proxy_type));
ui.btnUseDefaultFile->setChecked(prefs.use_default_file);
s.beginGroup("WebApps");
s.beginGroup("Facebook");
if(s.allKeys().contains("ConnectToken")){
ui.btnDisconnectFacebook->show();
} else {
ui.btnDisconnectFacebook->hide();
}
}
void PreferencesDialog::restorePrefs()

View file

@ -31,6 +31,8 @@ slots:
void proxyType_changed(int idx);
void on_btnUseDefaultFile_toggled(bool toggle);
void facebookLoginResponse(const QUrl& url);
void facebookDisconnect();
private:
explicit PreferencesDialog(QWidget *parent = 0, Qt::WindowFlags f = 0);
void setUiFromPrefs();

View file

@ -6,7 +6,7 @@
<rect>
<x>0</x>
<y>0</y>
<width>562</width>
<width>924</width>
<height>718</height>
</rect>
</property>
@ -972,7 +972,7 @@
</layout>
</widget>
<widget class="QWidget" name="page_6">
<layout class="QHBoxLayout" name="horizontalLayout_10">
<layout class="QVBoxLayout" name="verticalLayout_8">
<item>
<widget class="QWebView" name="facebookWebView">
<property name="url">
@ -982,6 +982,13 @@
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="btnDisconnectFacebook">
<property name="text">
<string>Disconnect from facebook</string>
</property>
</widget>
</item>
</layout>
</widget>
</widget>