1
0
mirror of https://git.FreeBSD.org/ports.git synced 2025-01-23 09:10:43 +00:00

- Backport fix to an authentication bug which makes it impossible to

authenticate to Google services.
- Bump PORTREVISION.

Submitted by:	Mina R Waheeb <mina at kemetex.com> via mailing list
This commit is contained in:
Alberto Villa 2012-07-18 22:56:35 +00:00
parent 0292b43240
commit 2419ec8a67
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=301131
2 changed files with 41 additions and 1 deletions

View File

@ -7,7 +7,7 @@
PORTNAME= akonadi-google
PORTVERSION= 0.3.1
PORTREVISION= 1
PORTREVISION= 2
CATEGORIES= databases kde
MASTER_SITES= http://www.progdan.cz/wp-content/uploads/
DISTNAME= ${PORTNAME}-${PORTVERSION}

View File

@ -0,0 +1,40 @@
commit a5ab37f15f39217cf631f8d61b2ea21305b81490
Author: Dan Vrátil <dan@progdan.cz>
Date: Wed Jun 6 00:36:46 2012 +0200
Parse OAuth code from page title instead of body
The OAuth code used for obtaining access tokens is provided
in webpage <title> as a string. The title is guaranteed not to change
syntax, while the body of the page, from which we were parsing the token
before, can change anytime, which breaks the authentication process.
BUG: 301240
FIXED-IN: 0.4.1
diff --git a/libkgapi/ui/authwidget_p.cpp b/libkgapi/ui/authwidget_p.cpp
index 57d914c..55e77cb 100644
--- ./libkgoogle/authdialog.cpp
+++ ./libkgoogle/authdialog.cpp
@@ -147,13 +147,18 @@ void AuthWidgetPrivate::webviewFinished()
}
if (url.host() == "accounts.google.com" && url.path() == "/o/oauth2/approval") {
- QWebElement el = m_webiew->page()->mainFrame()->findFirstElement("textarea");
- if (el.isNull()) {
+ QString title = m_webiew->title();
+ QString token;
+
+ if (title.startsWith(QLatin1String("success"), Qt::CaseInsensitive)) {
+ int pos = title.indexOf(QLatin1String("code="));
+ /* Skip the 'code=' string as well */
+ token = title.mid (pos + 5);
+ } else {
emitError(KGoogle::AuthError, i18n("Parsing token page failed."));
return;
}
- QString token = el.toInnerXml();
if (token.isEmpty()) {
emitError(KGoogle::AuthError, i18n("Failed to obtain token."));
return;