[gnome-online-accounts/gnome-3-22] flickr, oauth: Close the dialog if the user denied access
- From: Debarshi Ray <debarshir src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-online-accounts/gnome-3-22] flickr, oauth: Close the dialog if the user denied access
- Date: Tue, 8 Aug 2017 16:23:39 +0000 (UTC)
commit d829b90c2168ee3214b0b9d65bb5acad299a8b18
Author: Debarshi Ray <debarshir gnome org>
Date: Tue Aug 8 17:50:15 2017 +0200
flickr, oauth: Close the dialog if the user denied access
... via the OAuth1 web page.
Ever since Flickr was added, clicking the "NO, THANKS" widget in the
web page has redirected to https://www.gnome.org/, which is specified
as GNOME's website in Flickr's App Garden, instead of to the specified
callback URI and/or returning an error. The click on this element
cannot be intercepted because the "click" event handler is not being
called (WebKit bug?). Current attempts to inspect that element breaks
the WebKit inspector.
Instead, let's also use https://www.gnome.org/ as the callback URI,
and use the lack of a query when redirecting to it to close the window.
It might need adjustments when there is a different OAuth1-based
provider.
src/goabackend/goaflickrprovider.c | 6 +++++-
src/goabackend/goaoauthprovider.c | 25 ++++++++++++++++++-------
2 files changed, 23 insertions(+), 8 deletions(-)
---
diff --git a/src/goabackend/goaflickrprovider.c b/src/goabackend/goaflickrprovider.c
index 5010ce3..910e5f3 100644
--- a/src/goabackend/goaflickrprovider.c
+++ b/src/goabackend/goaflickrprovider.c
@@ -123,7 +123,11 @@ get_token_uri (GoaOAuthProvider *oauth_provider)
static const gchar *
get_callback_uri (GoaOAuthProvider *oauth_provider)
{
- return "https://www.gnome.org/goa-1.0/oauth";
+ /* Should match the URI specified in the Flickr App
+ * Garden in order to detect when the user denied access via
+ * the OAuth1 web page.
+ */
+ return "https://www.gnome.org/";
}
static const gchar *
diff --git a/src/goabackend/goaoauthprovider.c b/src/goabackend/goaoauthprovider.c
index 11e360f..29af82d 100644
--- a/src/goabackend/goaoauthprovider.c
+++ b/src/goabackend/goaoauthprovider.c
@@ -683,19 +683,30 @@ on_web_view_decide_policy (WebKitWebView *web_view,
uri = soup_uri_new (requested_uri);
query = soup_uri_get_query (uri);
- key_value_pairs = soup_form_decode (query);
+ if (query != NULL)
+ {
+ key_value_pairs = soup_form_decode (query);
+
+ data->oauth_verifier = g_strdup (g_hash_table_lookup (key_value_pairs, "oauth_verifier"));
+ if (data->oauth_verifier != NULL)
+ response_id = GTK_RESPONSE_OK;
+
+ g_hash_table_unref (key_value_pairs);
+ }
- /* TODO: error handling? */
- data->oauth_verifier = g_strdup (g_hash_table_lookup (key_value_pairs, "oauth_verifier"));
if (data->oauth_verifier != NULL)
- response_id = GTK_RESPONSE_OK;
+ goto ignore_request;
- g_hash_table_unref (key_value_pairs);
+ /* TODO: The only OAuth1 provider is Flickr. It doesn't send any
+ * error code and only redirects to the URI specified in the Flickr
+ * App Garden. Re-evaluate when the situation changes.
+ */
+ response_id = GTK_RESPONSE_CANCEL;
goto ignore_request;
ignore_request:
- if (response_id != GTK_RESPONSE_NONE)
- gtk_dialog_response (data->dialog, response_id);
+ g_assert (response_id != GTK_RESPONSE_NONE);
+ gtk_dialog_response (data->dialog, response_id);
webkit_policy_decision_ignore (decision);
return TRUE;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]