mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
Don't store the Facebook credentials between multiple runs of Subsurface
They stay valid while Subsurface is running, but once you quit, the credentials are gone. This way no one can steal them from our settings. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
parent
646fa22c01
commit
eeb0c6a756
1 changed files with 33 additions and 0 deletions
|
@ -21,12 +21,14 @@
|
||||||
#include "helpers.h"
|
#include "helpers.h"
|
||||||
#include "ui_socialnetworksdialog.h"
|
#include "ui_socialnetworksdialog.h"
|
||||||
|
|
||||||
|
#if SAVE_FB_CREDENTIALS
|
||||||
#define GET_TXT(name, field) \
|
#define GET_TXT(name, field) \
|
||||||
v = s.value(QString(name)); \
|
v = s.value(QString(name)); \
|
||||||
if (v.isValid()) \
|
if (v.isValid()) \
|
||||||
prefs.field = strdup(v.toString().toUtf8().constData()); \
|
prefs.field = strdup(v.toString().toUtf8().constData()); \
|
||||||
else \
|
else \
|
||||||
prefs.field = default_prefs.field
|
prefs.field = default_prefs.field
|
||||||
|
#endif
|
||||||
|
|
||||||
FacebookManager *FacebookManager::instance()
|
FacebookManager *FacebookManager::instance()
|
||||||
{
|
{
|
||||||
|
@ -55,6 +57,7 @@ bool FacebookManager::loggedIn() {
|
||||||
|
|
||||||
void FacebookManager::sync()
|
void FacebookManager::sync()
|
||||||
{
|
{
|
||||||
|
#if SAVE_FB_CREDENTIALS
|
||||||
qDebug() << "Sync Active";
|
qDebug() << "Sync Active";
|
||||||
QSettings s;
|
QSettings s;
|
||||||
s.beginGroup("WebApps");
|
s.beginGroup("WebApps");
|
||||||
|
@ -68,6 +71,7 @@ void FacebookManager::sync()
|
||||||
qDebug() << "Connection Token" << prefs.facebook.access_token;
|
qDebug() << "Connection Token" << prefs.facebook.access_token;
|
||||||
qDebug() << "User ID" << prefs.facebook.user_id;
|
qDebug() << "User ID" << prefs.facebook.user_id;
|
||||||
qDebug() << "Album ID" << prefs.facebook.album_id;
|
qDebug() << "Album ID" << prefs.facebook.album_id;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void FacebookManager::tryLogin(const QUrl& loginResponse)
|
void FacebookManager::tryLogin(const QUrl& loginResponse)
|
||||||
|
@ -83,10 +87,15 @@ void FacebookManager::tryLogin(const QUrl& loginResponse)
|
||||||
int to = result.indexOf("&expires_in");
|
int to = result.indexOf("&expires_in");
|
||||||
QString securityToken = result.mid(from, to-from);
|
QString securityToken = result.mid(from, to-from);
|
||||||
|
|
||||||
|
#if SAVE_FB_CREDENTIALS
|
||||||
QSettings settings;
|
QSettings settings;
|
||||||
settings.beginGroup("WebApps");
|
settings.beginGroup("WebApps");
|
||||||
settings.beginGroup("Facebook");
|
settings.beginGroup("Facebook");
|
||||||
settings.setValue("ConnectToken", securityToken);
|
settings.setValue("ConnectToken", securityToken);
|
||||||
|
#else
|
||||||
|
prefs.facebook.access_token = copy_string(securityToken.toUtf8().data());
|
||||||
|
qDebug() << "Got access token" << prefs.facebook.access_token;
|
||||||
|
#endif
|
||||||
sync();
|
sync();
|
||||||
requestUserId();
|
requestUserId();
|
||||||
sync();
|
sync();
|
||||||
|
@ -97,6 +106,7 @@ void FacebookManager::tryLogin(const QUrl& loginResponse)
|
||||||
void FacebookManager::logout()
|
void FacebookManager::logout()
|
||||||
{
|
{
|
||||||
qDebug() << "Logging out";
|
qDebug() << "Logging out";
|
||||||
|
#if SAVE_FB_CREDENTIALS
|
||||||
QSettings settings;
|
QSettings settings;
|
||||||
settings.beginGroup("WebApps");
|
settings.beginGroup("WebApps");
|
||||||
settings.beginGroup("Facebook");
|
settings.beginGroup("Facebook");
|
||||||
|
@ -104,6 +114,14 @@ void FacebookManager::logout()
|
||||||
settings.remove("UserId");
|
settings.remove("UserId");
|
||||||
settings.remove("AlbumId");
|
settings.remove("AlbumId");
|
||||||
sync();
|
sync();
|
||||||
|
#else
|
||||||
|
free(prefs.facebook.access_token);
|
||||||
|
free(prefs.facebook.album_id);
|
||||||
|
free(prefs.facebook.user_id);
|
||||||
|
prefs.facebook.access_token = NULL;
|
||||||
|
prefs.facebook.album_id = NULL;
|
||||||
|
prefs.facebook.user_id = NULL;
|
||||||
|
#endif
|
||||||
emit justLoggedOut();
|
emit justLoggedOut();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -119,9 +137,11 @@ void FacebookManager::requestAlbumId()
|
||||||
connect(reply, SIGNAL(finished()), &loop, SLOT(quit()));
|
connect(reply, SIGNAL(finished()), &loop, SLOT(quit()));
|
||||||
loop.exec();
|
loop.exec();
|
||||||
|
|
||||||
|
#if SAVE_FB_CREDENTIALS
|
||||||
QSettings s;
|
QSettings s;
|
||||||
s.beginGroup("WebApps");
|
s.beginGroup("WebApps");
|
||||||
s.beginGroup("Facebook");
|
s.beginGroup("Facebook");
|
||||||
|
#endif
|
||||||
|
|
||||||
QJsonDocument albumsDoc = QJsonDocument::fromJson(reply->readAll());
|
QJsonDocument albumsDoc = QJsonDocument::fromJson(reply->readAll());
|
||||||
QJsonArray albumObj = albumsDoc.object().value("data").toArray();
|
QJsonArray albumObj = albumsDoc.object().value("data").toArray();
|
||||||
|
@ -129,7 +149,11 @@ void FacebookManager::requestAlbumId()
|
||||||
QJsonObject obj = v.toObject();
|
QJsonObject obj = v.toObject();
|
||||||
if (obj.value("name").toString() == albumName) {
|
if (obj.value("name").toString() == albumName) {
|
||||||
qDebug() << "Album already Exists, using it's id";
|
qDebug() << "Album already Exists, using it's id";
|
||||||
|
#if SAVE_FB_CREDENTIALS
|
||||||
s.setValue("AlbumId", obj.value("id").toString());
|
s.setValue("AlbumId", obj.value("id").toString());
|
||||||
|
#else
|
||||||
|
prefs.facebook.album_id = copy_string(obj.value("id").toString().toUtf8().data());
|
||||||
|
#endif
|
||||||
qDebug() << "Got album ID";
|
qDebug() << "Got album ID";
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -151,7 +175,11 @@ void FacebookManager::requestAlbumId()
|
||||||
albumsDoc = QJsonDocument::fromJson(reply->readAll());
|
albumsDoc = QJsonDocument::fromJson(reply->readAll());
|
||||||
QJsonObject album = albumsDoc.object();
|
QJsonObject album = albumsDoc.object();
|
||||||
if (album.contains("id")) {
|
if (album.contains("id")) {
|
||||||
|
#if SAVE_FB_CREDENTIALS
|
||||||
s.setValue("AlbumId", album.value("id").toString());
|
s.setValue("AlbumId", album.value("id").toString());
|
||||||
|
#else
|
||||||
|
prefs.facebook.album_id = copy_string(album.value("id").toString().toUtf8().data());
|
||||||
|
#endif
|
||||||
qDebug() << "Got album ID";
|
qDebug() << "Got album ID";
|
||||||
sync();
|
sync();
|
||||||
return;
|
return;
|
||||||
|
@ -174,10 +202,14 @@ void FacebookManager::requestUserId()
|
||||||
QJsonDocument jsonDoc = QJsonDocument::fromJson(reply->readAll());
|
QJsonDocument jsonDoc = QJsonDocument::fromJson(reply->readAll());
|
||||||
QJsonObject obj = jsonDoc.object();
|
QJsonObject obj = jsonDoc.object();
|
||||||
if (obj.keys().contains("id")){
|
if (obj.keys().contains("id")){
|
||||||
|
#if SAVE_FB_CREDENTIALS
|
||||||
QSettings s;
|
QSettings s;
|
||||||
s.beginGroup("WebApps");
|
s.beginGroup("WebApps");
|
||||||
s.beginGroup("Facebook");
|
s.beginGroup("Facebook");
|
||||||
s.setValue("UserId", obj.value("id").toVariant());
|
s.setValue("UserId", obj.value("id").toVariant());
|
||||||
|
#else
|
||||||
|
prefs.facebook.user_id = copy_string(obj.value("id").toString().toUtf8().data());
|
||||||
|
#endif
|
||||||
qDebug() << "Got user id.";
|
qDebug() << "Got user id.";
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -213,6 +245,7 @@ void FacebookManager::sendDive()
|
||||||
"&access_token=" + QString(prefs.facebook.access_token) +
|
"&access_token=" + QString(prefs.facebook.access_token) +
|
||||||
"&source=image" +
|
"&source=image" +
|
||||||
"&message=" + dialog.text().replace(""", "%22"));
|
"&message=" + dialog.text().replace(""", "%22"));
|
||||||
|
qDebug() << "About to post using access token" << prefs.facebook.access_token;
|
||||||
|
|
||||||
QNetworkAccessManager *am = new QNetworkAccessManager(this);
|
QNetworkAccessManager *am = new QNetworkAccessManager(this);
|
||||||
QNetworkRequest request(url);
|
QNetworkRequest request(url);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue