[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    extragear/graphics/kipi-plugins
From:       Luka Renko <lure () kubuntu ! org>
Date:       2009-02-13 22:19:17
Message-ID: 1234563557.581487.13381.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 925700 by lure:

Facebook application type has changed to Desktop (was wrongly set as Web before).

This requires slightly different way of authenticating/signing API requests and
will therefore break Facebook import/export for all users that will not upgrade
to new code. Since Release Candidate 2 is this weekend, this should not be for 
too long. SVN users should just rebuild.

BUG: 182838


 M  +2 -1      NEWS  
 M  +22 -4     facebook/fbtalker.cpp  
 M  +21 -17    facebook/fbtalker.h  
 M  +6 -2      facebook/fbwindow.cpp  
 M  +1 -0      facebook/fbwindow.h  


--- trunk/extragear/graphics/kipi-plugins/NEWS #925699:925700
@@ -14,7 +14,8 @@
 004 ==> 181334 : IpodExort          : The artwork API in libgpod-0.7.0 has changed \
slightly, IpodExport plugin needs updated.  005 ==> 181853 : MetadataEdit       : \
Entering new xmp meta data removes old one from the image file.  006 ==> 133649 : \
                Print Wizard       : Scale images instead of cropping.
-007 ==> 
+007 ==> 182838 : Facebook           : Change API authentication to Desktop \
application type. +008 ==> 
 
 Kipi-plugins 0.2.0-rc1 - Release date: 21/01/2009
 ------------------------------------------------------------------------
--- trunk/extragear/graphics/kipi-plugins/facebook/fbtalker.cpp #925699:925700
@@ -80,7 +80,7 @@
         m_job->kill();
 }
 
-bool FbTalker::loggedIn()
+bool FbTalker::loggedIn() const
 {
     return !m_sessionKey.isEmpty();
 }
@@ -90,6 +90,11 @@
     return m_sessionKey;
 }
 
+QString FbTalker::getSessionSecret() const
+{
+    return m_sessionSecret;
+}
+
 unsigned int FbTalker::getSessionExpires() const
 {
     return m_sessionExpires;
@@ -129,7 +134,10 @@
         concat.append("=");
         concat.append(it.value());
     }
-    concat.append(m_secretKey);
+    if (args["session_key"].isEmpty())
+        concat.append(m_secretKey);
+    else
+        concat.append(m_sessionSecret);
 
     KMD5 md5(concat.toUtf8());
     return md5.hexDigest().data();
@@ -155,15 +163,20 @@
     return concat;
 }
 
-void FbTalker::authenticate(const QString &sessionKey, unsigned int sessionExpires)
+void FbTalker::authenticate(const QString &sessionKey, 
+                            const QString &sessionSecret,
+                            unsigned int sessionExpires)
 {
     m_loginInProgress = true;
 
-    if (!sessionKey.isEmpty() && sessionExpires > (unsigned int)(time(0) + 900))
+    if (!sessionKey.isEmpty() 
+        && !sessionSecret.isEmpty()
+        && sessionExpires > (unsigned int)(time(0) + 900))
     {
         // sessionKey seems to be still valid for at least 15 minutes
         // - check if it still works
         m_sessionKey     = sessionKey;
+        m_sessionSecret  = sessionSecret;
         m_sessionExpires = sessionExpires;
 
         m_authProgressDlg->setLabelText(i18n("Validate previous session..."));
@@ -800,6 +813,7 @@
     {
         m_authToken.clear();
         m_sessionKey.clear();
+        m_sessionSecret.clear();
         m_sessionExpires = 0;
         m_user.clear();
     }
@@ -908,6 +922,8 @@
                 continue;
             if (node.nodeName() == "session_key")
                 m_sessionKey = node.toElement().text();
+            else if (node.nodeName() == "secret")
+                m_sessionSecret = node.toElement().text();
             else if (node.nodeName() == "uid")
                 m_user.id = node.toElement().text().toLongLong();
             else if (node.nodeName() == "expires")
@@ -962,6 +978,7 @@
         // it seems that session expired -> create new token and session
         m_authToken.clear();
         m_sessionKey.clear();
+        m_sessionSecret.clear();
         m_sessionExpires = 0;
         m_user.clear();
 
@@ -1094,6 +1111,7 @@
 
     // consider we are logged out in any case
     m_sessionKey.clear();
+    m_sessionSecret.clear();
     m_sessionExpires = 0;
     m_user.clear();
 
--- trunk/extragear/graphics/kipi-plugins/facebook/fbtalker.h #925699:925700
@@ -50,13 +50,16 @@
     ~FbTalker();
 
     QString         getSessionKey() const;
+    QString         getSessionSecret() const;
     unsigned int    getSessionExpires() const;
 
     FbUser  getUser() const;
 
-    bool    loggedIn();
+    bool    loggedIn() const;
     void    cancel();
-    void    authenticate(const QString& sessionKey, unsigned int sessionExpires);
+    void    authenticate(const QString& sessionKey, 
+                         const QString& sessionSecret,
+                         unsigned int sessionExpires);
     void    changePerm();
     void    logout();
 
@@ -136,27 +139,28 @@
     void slotResult(KJob *job);
 
 private:
-    QWidget*   m_parent;
+    QWidget*        m_parent;
 
-    QByteArray m_buffer;
+    QByteArray      m_buffer;
 
-    QString    m_userAgent;
-    QString    m_apiURL;
-    QString    m_apiVersion;
-    QString    m_apiKey;
-    QString    m_secretKey;
+    QString         m_userAgent;
+    QString         m_apiURL;
+    QString         m_apiVersion;
+    QString         m_apiKey;
+    QString         m_secretKey;
 
-    bool       m_loginInProgress;
-    QString    m_authToken;
-    QString    m_sessionKey;
-    long       m_sessionExpires;
-    QTime      m_callID;
+    bool            m_loginInProgress;
+    QString         m_authToken;
+    QString         m_sessionKey;
+    QString         m_sessionSecret;
+    unsigned int    m_sessionExpires;
+    QTime           m_callID;
 
-    FbUser     m_user;
+    FbUser          m_user;
 
-    KIO::Job*  m_job;
+    KIO::Job*       m_job;
 
-    State      m_state;
+    State           m_state;
 };
 
 } // namespace KIPIFbPlugin
--- trunk/extragear/graphics/kipi-plugins/facebook/fbwindow.cpp #925699:925700
@@ -212,7 +212,7 @@
 
     kDebug(51000) << "Calling Login method";
     buttonStateChange(m_talker->loggedIn());
-    m_talker->authenticate(m_sessionKey, m_sessionExpires); 
+    m_talker->authenticate(m_sessionKey, m_sessionSecret, m_sessionExpires); 
 }
 
 FbWindow::~FbWindow()
@@ -230,6 +230,7 @@
     KConfig config("kipirc");
     KConfigGroup grp = config.group("Facebook Settings");
     m_sessionKey = grp.readEntry("Session Key");
+    m_sessionSecret = grp.readEntry("Session Secret");
     m_sessionExpires = grp.readEntry("Session Expires", 0);
     m_currentAlbumID = grp.readEntry("Current Album", -1LL);
 
@@ -265,6 +266,7 @@
     KConfig config("kipirc");
     KConfigGroup grp = config.group("Facebook Settings");
     grp.writeEntry("Session Key", m_sessionKey);
+    grp.writeEntry("Session Secret", m_sessionSecret);
     grp.writeEntry("Session Expires", m_sessionExpires);
     grp.writeEntry("Current Album", m_currentAlbumID);
     grp.writeEntry("Resize", m_widget->m_resizeChB->isChecked());
@@ -306,6 +308,7 @@
         m_widget->m_albumsCoB->addItem(i18n("<auto create>"), 0);
 
     m_sessionKey = m_talker->getSessionKey();
+    m_sessionSecret = m_talker->getSessionSecret();
     m_sessionExpires = m_talker->getSessionExpires();
 
     if (errCode == 0 && m_talker->loggedIn())
@@ -460,11 +463,12 @@
     {
         m_talker->logout();
         m_sessionKey.clear();
+        m_sessionSecret.clear();
         m_sessionExpires = 0;
     }
 
     kDebug(51000) << "Calling Login method";
-    m_talker->authenticate(m_sessionKey, m_sessionExpires);
+    m_talker->authenticate(m_sessionKey, m_sessionSecret, m_sessionExpires);
 }
 
 void FbWindow::slotPermChangeRequest()
--- trunk/extragear/graphics/kipi-plugins/facebook/fbwindow.h #925699:925700
@@ -122,6 +122,7 @@
     long long                   m_profileAID;
     long long                   m_currentAlbumID;
     QString                     m_sessionKey;
+    QString                     m_sessionSecret;
     unsigned int                m_sessionExpires;
 
     QProgressDialog            *m_progressDlg;


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic