Update to 3.10.2
This commit is contained in:
parent
716c1d1231
commit
b8bedf5ccb
@ -1,487 +0,0 @@
|
|||||||
From e52d671808139e8bce90e87f81486288267b645f Mon Sep 17 00:00:00 2001
|
|
||||||
From: Debarshi Ray <debarshir@gnome.org>
|
|
||||||
Date: Thu, 17 Oct 2013 16:26:16 +0200
|
|
||||||
Subject: [PATCH 1/4] oauth2: Clean up
|
|
||||||
|
|
||||||
Consolidate the ways in which the query and fragment are accessed.
|
|
||||||
|
|
||||||
Fixes: https://bugzilla.gnome.org/710363
|
|
||||||
---
|
|
||||||
src/goabackend/goaoauth2provider.c | 12 ++++++++----
|
|
||||||
1 file changed, 8 insertions(+), 4 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/goabackend/goaoauth2provider.c b/src/goabackend/goaoauth2provider.c
|
|
||||||
index 8efdea5..3a5fdf9 100644
|
|
||||||
--- a/src/goabackend/goaoauth2provider.c
|
|
||||||
+++ b/src/goabackend/goaoauth2provider.c
|
|
||||||
@@ -888,9 +888,13 @@ on_web_view_navigation_policy_decision_requested (WebKitWebView *web
|
|
||||||
{
|
|
||||||
SoupMessage *message;
|
|
||||||
SoupURI *uri;
|
|
||||||
+ const gchar *fragment;
|
|
||||||
+ const gchar *query;
|
|
||||||
|
|
||||||
message = webkit_network_request_get_message (request);
|
|
||||||
uri = soup_message_get_uri (message);
|
|
||||||
+ fragment = soup_uri_get_fragment (uri);
|
|
||||||
+ query = soup_uri_get_query (uri);
|
|
||||||
|
|
||||||
/* Two cases:
|
|
||||||
* 1) we can have either the auth code in the query part of the
|
|
||||||
@@ -898,11 +902,11 @@ on_web_view_navigation_policy_decision_requested (WebKitWebView *web
|
|
||||||
* 2) the access_token and other information directly in the
|
|
||||||
* fragment part of the URI.
|
|
||||||
*/
|
|
||||||
- if (soup_uri_get_query (uri) != NULL)
|
|
||||||
+ if (query != NULL)
|
|
||||||
{
|
|
||||||
GHashTable *key_value_pairs;
|
|
||||||
|
|
||||||
- key_value_pairs = soup_form_decode (uri->query);
|
|
||||||
+ key_value_pairs = soup_form_decode (query);
|
|
||||||
|
|
||||||
priv->authorization_code = g_strdup (g_hash_table_lookup (key_value_pairs, "code"));
|
|
||||||
if (priv->authorization_code != NULL)
|
|
||||||
@@ -927,13 +931,13 @@ on_web_view_navigation_policy_decision_requested (WebKitWebView *web
|
|
||||||
g_hash_table_unref (key_value_pairs);
|
|
||||||
webkit_web_policy_decision_ignore (policy_decision);
|
|
||||||
}
|
|
||||||
- else if (soup_uri_get_fragment (uri) != NULL)
|
|
||||||
+ else if (fragment != NULL)
|
|
||||||
{
|
|
||||||
GHashTable *key_value_pairs;
|
|
||||||
|
|
||||||
/* fragment is encoded into a key/value pairs for the token and
|
|
||||||
* expiration values, using the same syntax as a URL query */
|
|
||||||
- key_value_pairs = soup_form_decode (soup_uri_get_fragment (uri));
|
|
||||||
+ key_value_pairs = soup_form_decode (fragment);
|
|
||||||
|
|
||||||
/* We might use oauth2_proxy_extract_access_token() here but
|
|
||||||
* we can also extract other information.
|
|
||||||
--
|
|
||||||
1.8.3.1
|
|
||||||
|
|
||||||
|
|
||||||
From d3d339b32122789e8422c0a66f1e580a3af29e26 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Debarshi Ray <debarshir@gnome.org>
|
|
||||||
Date: Fri, 18 Oct 2013 12:13:52 +0200
|
|
||||||
Subject: [PATCH 2/4] oauth2: Clean up
|
|
||||||
|
|
||||||
Simplify the maze of nested if-else branches and multiple return sites.
|
|
||||||
|
|
||||||
Fixes: https://bugzilla.gnome.org/710363
|
|
||||||
---
|
|
||||||
src/goabackend/goaoauth2provider.c | 173 +++++++++++++++++++------------------
|
|
||||||
1 file changed, 88 insertions(+), 85 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/goabackend/goaoauth2provider.c b/src/goabackend/goaoauth2provider.c
|
|
||||||
index 3a5fdf9..45228ca 100644
|
|
||||||
--- a/src/goabackend/goaoauth2provider.c
|
|
||||||
+++ b/src/goabackend/goaoauth2provider.c
|
|
||||||
@@ -876,120 +876,123 @@ on_web_view_navigation_policy_decision_requested (WebKitWebView *web
|
|
||||||
{
|
|
||||||
GoaOAuth2Provider *provider = GOA_OAUTH2_PROVIDER (user_data);
|
|
||||||
GoaOAuth2ProviderPrivate *priv = provider->priv;
|
|
||||||
+ SoupMessage *message;
|
|
||||||
+ SoupURI *uri;
|
|
||||||
+ const gchar *fragment;
|
|
||||||
const gchar *oauth2_error;
|
|
||||||
+ const gchar *query;
|
|
||||||
const gchar *redirect_uri;
|
|
||||||
const gchar *requested_uri;
|
|
||||||
+ gint response_id;
|
|
||||||
|
|
||||||
/* TODO: use oauth2_proxy_extract_access_token() */
|
|
||||||
|
|
||||||
requested_uri = webkit_network_request_get_uri (request);
|
|
||||||
redirect_uri = goa_oauth2_provider_get_redirect_uri (provider);
|
|
||||||
- if (g_str_has_prefix (requested_uri, redirect_uri))
|
|
||||||
+ if (!g_str_has_prefix (requested_uri, redirect_uri))
|
|
||||||
+ goto default_behaviour;
|
|
||||||
+
|
|
||||||
+ message = webkit_network_request_get_message (request);
|
|
||||||
+ uri = soup_message_get_uri (message);
|
|
||||||
+ fragment = soup_uri_get_fragment (uri);
|
|
||||||
+ query = soup_uri_get_query (uri);
|
|
||||||
+
|
|
||||||
+ /* Two cases:
|
|
||||||
+ * 1) we can have either the auth code in the query part of the
|
|
||||||
+ * URI, with which we'll obtain the token, or
|
|
||||||
+ * 2) the access_token and other information directly in the
|
|
||||||
+ * fragment part of the URI.
|
|
||||||
+ */
|
|
||||||
+ if (query != NULL)
|
|
||||||
{
|
|
||||||
- SoupMessage *message;
|
|
||||||
- SoupURI *uri;
|
|
||||||
- const gchar *fragment;
|
|
||||||
- const gchar *query;
|
|
||||||
-
|
|
||||||
- message = webkit_network_request_get_message (request);
|
|
||||||
- uri = soup_message_get_uri (message);
|
|
||||||
- fragment = soup_uri_get_fragment (uri);
|
|
||||||
- query = soup_uri_get_query (uri);
|
|
||||||
-
|
|
||||||
- /* Two cases:
|
|
||||||
- * 1) we can have either the auth code in the query part of the
|
|
||||||
- * URI, with which we'll obtain the token, or
|
|
||||||
- * 2) the access_token and other information directly in the
|
|
||||||
- * fragment part of the URI.
|
|
||||||
- */
|
|
||||||
- if (query != NULL)
|
|
||||||
- {
|
|
||||||
- GHashTable *key_value_pairs;
|
|
||||||
+ GHashTable *key_value_pairs;
|
|
||||||
|
|
||||||
- key_value_pairs = soup_form_decode (query);
|
|
||||||
+ key_value_pairs = soup_form_decode (query);
|
|
||||||
|
|
||||||
- priv->authorization_code = g_strdup (g_hash_table_lookup (key_value_pairs, "code"));
|
|
||||||
- if (priv->authorization_code != NULL)
|
|
||||||
- {
|
|
||||||
- gtk_dialog_response (priv->dialog, GTK_RESPONSE_OK);
|
|
||||||
- }
|
|
||||||
+ priv->authorization_code = g_strdup (g_hash_table_lookup (key_value_pairs, "code"));
|
|
||||||
+ if (priv->authorization_code != NULL)
|
|
||||||
+ {
|
|
||||||
+ response_id = GTK_RESPONSE_OK;
|
|
||||||
+ }
|
|
||||||
+ else
|
|
||||||
+ {
|
|
||||||
+ oauth2_error = (const gchar *) g_hash_table_lookup (key_value_pairs, "error");
|
|
||||||
+ if (g_strcmp0 (oauth2_error, GOA_OAUTH2_ACCESS_DENIED) == 0)
|
|
||||||
+ response_id = GTK_RESPONSE_CANCEL;
|
|
||||||
else
|
|
||||||
{
|
|
||||||
- oauth2_error = (const gchar *) g_hash_table_lookup (key_value_pairs, "error");
|
|
||||||
- if (g_strcmp0 (oauth2_error, GOA_OAUTH2_ACCESS_DENIED) == 0)
|
|
||||||
- gtk_dialog_response (priv->dialog, GTK_RESPONSE_CANCEL);
|
|
||||||
- else
|
|
||||||
- {
|
|
||||||
- g_set_error (&priv->error,
|
|
||||||
- GOA_ERROR,
|
|
||||||
- GOA_ERROR_NOT_AUTHORIZED,
|
|
||||||
- _("Authorization response was \"%s\""),
|
|
||||||
- oauth2_error);
|
|
||||||
- gtk_dialog_response (priv->dialog, GTK_RESPONSE_CLOSE);
|
|
||||||
- }
|
|
||||||
+ g_set_error (&priv->error,
|
|
||||||
+ GOA_ERROR,
|
|
||||||
+ GOA_ERROR_NOT_AUTHORIZED,
|
|
||||||
+ _("Authorization response was \"%s\""),
|
|
||||||
+ oauth2_error);
|
|
||||||
+ response_id = GTK_RESPONSE_CLOSE;
|
|
||||||
}
|
|
||||||
- g_hash_table_unref (key_value_pairs);
|
|
||||||
- webkit_web_policy_decision_ignore (policy_decision);
|
|
||||||
}
|
|
||||||
- else if (fragment != NULL)
|
|
||||||
- {
|
|
||||||
- GHashTable *key_value_pairs;
|
|
||||||
+ g_hash_table_unref (key_value_pairs);
|
|
||||||
+ goto ignore_request;
|
|
||||||
+ }
|
|
||||||
+ else if (fragment != NULL)
|
|
||||||
+ {
|
|
||||||
+ GHashTable *key_value_pairs;
|
|
||||||
|
|
||||||
- /* fragment is encoded into a key/value pairs for the token and
|
|
||||||
- * expiration values, using the same syntax as a URL query */
|
|
||||||
- key_value_pairs = soup_form_decode (fragment);
|
|
||||||
+ /* fragment is encoded into a key/value pairs for the token and
|
|
||||||
+ * expiration values, using the same syntax as a URL query */
|
|
||||||
+ key_value_pairs = soup_form_decode (fragment);
|
|
||||||
|
|
||||||
- /* We might use oauth2_proxy_extract_access_token() here but
|
|
||||||
- * we can also extract other information.
|
|
||||||
- */
|
|
||||||
- priv->access_token = g_strdup (g_hash_table_lookup (key_value_pairs, "access_token"));
|
|
||||||
- if (priv->access_token != NULL)
|
|
||||||
- {
|
|
||||||
- gchar *expires_in_str = NULL;
|
|
||||||
+ /* We might use oauth2_proxy_extract_access_token() here but
|
|
||||||
+ * we can also extract other information.
|
|
||||||
+ */
|
|
||||||
+ priv->access_token = g_strdup (g_hash_table_lookup (key_value_pairs, "access_token"));
|
|
||||||
+ if (priv->access_token != NULL)
|
|
||||||
+ {
|
|
||||||
+ gchar *expires_in_str = NULL;
|
|
||||||
|
|
||||||
- expires_in_str = g_hash_table_lookup (key_value_pairs, "expires_in");
|
|
||||||
- /* sometimes "expires_in" appears as "expires" */
|
|
||||||
- if (expires_in_str == NULL)
|
|
||||||
- expires_in_str = g_hash_table_lookup (key_value_pairs, "expires");
|
|
||||||
+ expires_in_str = g_hash_table_lookup (key_value_pairs, "expires_in");
|
|
||||||
+ /* sometimes "expires_in" appears as "expires" */
|
|
||||||
+ if (expires_in_str == NULL)
|
|
||||||
+ expires_in_str = g_hash_table_lookup (key_value_pairs, "expires");
|
|
||||||
|
|
||||||
- if (expires_in_str != NULL)
|
|
||||||
- priv->access_token_expires_in = atoi (expires_in_str);
|
|
||||||
+ if (expires_in_str != NULL)
|
|
||||||
+ priv->access_token_expires_in = atoi (expires_in_str);
|
|
||||||
|
|
||||||
- priv->refresh_token = g_strdup (g_hash_table_lookup (key_value_pairs, "refresh_token"));
|
|
||||||
+ priv->refresh_token = g_strdup (g_hash_table_lookup (key_value_pairs, "refresh_token"));
|
|
||||||
|
|
||||||
- gtk_dialog_response (priv->dialog, GTK_RESPONSE_OK);
|
|
||||||
- }
|
|
||||||
- else
|
|
||||||
- {
|
|
||||||
- oauth2_error = (const gchar *) g_hash_table_lookup (key_value_pairs, "error");
|
|
||||||
- if (g_strcmp0 (oauth2_error, GOA_OAUTH2_ACCESS_DENIED) == 0)
|
|
||||||
- gtk_dialog_response (priv->dialog, GTK_RESPONSE_CANCEL);
|
|
||||||
- else
|
|
||||||
- {
|
|
||||||
- g_set_error (&priv->error,
|
|
||||||
- GOA_ERROR,
|
|
||||||
- GOA_ERROR_NOT_AUTHORIZED,
|
|
||||||
- _("Authorization response was \"%s\""),
|
|
||||||
- oauth2_error);
|
|
||||||
- gtk_dialog_response (priv->dialog, GTK_RESPONSE_CLOSE);
|
|
||||||
- }
|
|
||||||
- }
|
|
||||||
- g_hash_table_unref (key_value_pairs);
|
|
||||||
- webkit_web_policy_decision_ignore (policy_decision);
|
|
||||||
+ response_id = GTK_RESPONSE_OK;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
- /* this actually means that something unexpected happened, either we
|
|
||||||
- * did something wrong or the provider's flow changed */
|
|
||||||
- goa_debug ("URI format not recognized, DEFAULT BEHAVIOUR");
|
|
||||||
- return FALSE;
|
|
||||||
+ oauth2_error = (const gchar *) g_hash_table_lookup (key_value_pairs, "error");
|
|
||||||
+ if (g_strcmp0 (oauth2_error, GOA_OAUTH2_ACCESS_DENIED) == 0)
|
|
||||||
+ response_id = GTK_RESPONSE_CANCEL;
|
|
||||||
+ else
|
|
||||||
+ {
|
|
||||||
+ g_set_error (&priv->error,
|
|
||||||
+ GOA_ERROR,
|
|
||||||
+ GOA_ERROR_NOT_AUTHORIZED,
|
|
||||||
+ _("Authorization response was \"%s\""),
|
|
||||||
+ oauth2_error);
|
|
||||||
+ response_id = GTK_RESPONSE_CLOSE;
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
- return TRUE; /* ignore the request */
|
|
||||||
+ g_hash_table_unref (key_value_pairs);
|
|
||||||
+ goto ignore_request;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
- return FALSE; /* make default behavior apply */
|
|
||||||
+ /* this actually means that something unexpected happened, either we
|
|
||||||
+ * did something wrong or the provider's flow changed */
|
|
||||||
+ goa_debug ("URI format not recognized, DEFAULT BEHAVIOUR");
|
|
||||||
+ goto default_behaviour;
|
|
||||||
}
|
|
||||||
+
|
|
||||||
+ ignore_request:
|
|
||||||
+ gtk_dialog_response (priv->dialog, response_id);
|
|
||||||
+ webkit_web_policy_decision_ignore (policy_decision);
|
|
||||||
+ return TRUE;
|
|
||||||
+
|
|
||||||
+ default_behaviour:
|
|
||||||
+ return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
--
|
|
||||||
1.8.3.1
|
|
||||||
|
|
||||||
|
|
||||||
From d35556c6d522941add2c48aade2515f0ae6c5d50 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Debarshi Ray <debarshir@gnome.org>
|
|
||||||
Date: Fri, 18 Oct 2013 13:34:02 +0200
|
|
||||||
Subject: [PATCH 3/4] oauth2: Adapt to changes in the redirect URI used by
|
|
||||||
Facebook
|
|
||||||
|
|
||||||
Once the user has logged into the embedded web view and granted
|
|
||||||
permissions, Facebook tries to redirect us to an URI of the form:
|
|
||||||
<get_redirect_uri>?#access_token=...
|
|
||||||
|
|
||||||
Earlier this used to be of the form:
|
|
||||||
<get_redirect_uri>#access_token=...
|
|
||||||
|
|
||||||
This confuses the navigation-policy-decision-requested handler to think
|
|
||||||
that Facebook is using the query part of the URI to return the
|
|
||||||
authorization code, which we will exchange for the access token. In
|
|
||||||
reality Facebook is still using the fragment to directly give us the
|
|
||||||
access token.
|
|
||||||
|
|
||||||
Therefore, lets first look at the fragment, and then the query.
|
|
||||||
|
|
||||||
According to the OAuth2 specification, the error is always passed in
|
|
||||||
the query component of the URI. So, if we failed to obtain the
|
|
||||||
authorization code or the access token, we should look at the query to
|
|
||||||
ascertain the cause of the error. See 4.1.2.1 for more information:
|
|
||||||
https://tools.ietf.org/html/draft-ietf-oauth-v2-23
|
|
||||||
|
|
||||||
Fixes: https://bugzilla.gnome.org/710363
|
|
||||||
---
|
|
||||||
src/goabackend/goaoauth2provider.c | 95 ++++++++++++++++----------------------
|
|
||||||
1 file changed, 39 insertions(+), 56 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/goabackend/goaoauth2provider.c b/src/goabackend/goaoauth2provider.c
|
|
||||||
index 45228ca..523a235 100644
|
|
||||||
--- a/src/goabackend/goaoauth2provider.c
|
|
||||||
+++ b/src/goabackend/goaoauth2provider.c
|
|
||||||
@@ -876,6 +876,7 @@ on_web_view_navigation_policy_decision_requested (WebKitWebView *web
|
|
||||||
{
|
|
||||||
GoaOAuth2Provider *provider = GOA_OAUTH2_PROVIDER (user_data);
|
|
||||||
GoaOAuth2ProviderPrivate *priv = provider->priv;
|
|
||||||
+ GHashTable *key_value_pairs;
|
|
||||||
SoupMessage *message;
|
|
||||||
SoupURI *uri;
|
|
||||||
const gchar *fragment;
|
|
||||||
@@ -898,44 +899,13 @@ on_web_view_navigation_policy_decision_requested (WebKitWebView *web
|
|
||||||
query = soup_uri_get_query (uri);
|
|
||||||
|
|
||||||
/* Two cases:
|
|
||||||
- * 1) we can have either the auth code in the query part of the
|
|
||||||
- * URI, with which we'll obtain the token, or
|
|
||||||
- * 2) the access_token and other information directly in the
|
|
||||||
- * fragment part of the URI.
|
|
||||||
+ * 1) we can either have the access_token and other information
|
|
||||||
+ * directly in the fragment part of the URI, or
|
|
||||||
+ * 2) the auth code can be in the query part of the URI, with which
|
|
||||||
+ * we'll obtain the token later.
|
|
||||||
*/
|
|
||||||
- if (query != NULL)
|
|
||||||
- {
|
|
||||||
- GHashTable *key_value_pairs;
|
|
||||||
-
|
|
||||||
- key_value_pairs = soup_form_decode (query);
|
|
||||||
-
|
|
||||||
- priv->authorization_code = g_strdup (g_hash_table_lookup (key_value_pairs, "code"));
|
|
||||||
- if (priv->authorization_code != NULL)
|
|
||||||
- {
|
|
||||||
- response_id = GTK_RESPONSE_OK;
|
|
||||||
- }
|
|
||||||
- else
|
|
||||||
- {
|
|
||||||
- oauth2_error = (const gchar *) g_hash_table_lookup (key_value_pairs, "error");
|
|
||||||
- if (g_strcmp0 (oauth2_error, GOA_OAUTH2_ACCESS_DENIED) == 0)
|
|
||||||
- response_id = GTK_RESPONSE_CANCEL;
|
|
||||||
- else
|
|
||||||
- {
|
|
||||||
- g_set_error (&priv->error,
|
|
||||||
- GOA_ERROR,
|
|
||||||
- GOA_ERROR_NOT_AUTHORIZED,
|
|
||||||
- _("Authorization response was \"%s\""),
|
|
||||||
- oauth2_error);
|
|
||||||
- response_id = GTK_RESPONSE_CLOSE;
|
|
||||||
- }
|
|
||||||
- }
|
|
||||||
- g_hash_table_unref (key_value_pairs);
|
|
||||||
- goto ignore_request;
|
|
||||||
- }
|
|
||||||
- else if (fragment != NULL)
|
|
||||||
+ if (fragment != NULL)
|
|
||||||
{
|
|
||||||
- GHashTable *key_value_pairs;
|
|
||||||
-
|
|
||||||
/* fragment is encoded into a key/value pairs for the token and
|
|
||||||
* expiration values, using the same syntax as a URL query */
|
|
||||||
key_value_pairs = soup_form_decode (fragment);
|
|
||||||
@@ -960,31 +930,44 @@ on_web_view_navigation_policy_decision_requested (WebKitWebView *web
|
|
||||||
|
|
||||||
response_id = GTK_RESPONSE_OK;
|
|
||||||
}
|
|
||||||
- else
|
|
||||||
- {
|
|
||||||
- oauth2_error = (const gchar *) g_hash_table_lookup (key_value_pairs, "error");
|
|
||||||
- if (g_strcmp0 (oauth2_error, GOA_OAUTH2_ACCESS_DENIED) == 0)
|
|
||||||
- response_id = GTK_RESPONSE_CANCEL;
|
|
||||||
- else
|
|
||||||
- {
|
|
||||||
- g_set_error (&priv->error,
|
|
||||||
- GOA_ERROR,
|
|
||||||
- GOA_ERROR_NOT_AUTHORIZED,
|
|
||||||
- _("Authorization response was \"%s\""),
|
|
||||||
- oauth2_error);
|
|
||||||
- response_id = GTK_RESPONSE_CLOSE;
|
|
||||||
- }
|
|
||||||
- }
|
|
||||||
g_hash_table_unref (key_value_pairs);
|
|
||||||
- goto ignore_request;
|
|
||||||
}
|
|
||||||
+
|
|
||||||
+ if (priv->access_token != NULL)
|
|
||||||
+ goto ignore_request;
|
|
||||||
+
|
|
||||||
+ if (query != NULL)
|
|
||||||
+ {
|
|
||||||
+ key_value_pairs = soup_form_decode (query);
|
|
||||||
+
|
|
||||||
+ priv->authorization_code = g_strdup (g_hash_table_lookup (key_value_pairs, "code"));
|
|
||||||
+ if (priv->authorization_code != NULL)
|
|
||||||
+ response_id = GTK_RESPONSE_OK;
|
|
||||||
+
|
|
||||||
+ g_hash_table_unref (key_value_pairs);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (priv->authorization_code != NULL)
|
|
||||||
+ goto ignore_request;
|
|
||||||
+
|
|
||||||
+ /* In case we don't find the access_token or auth code, then look
|
|
||||||
+ * for the error in the query part of the URI.
|
|
||||||
+ */
|
|
||||||
+ key_value_pairs = soup_form_decode (query);
|
|
||||||
+ oauth2_error = (const gchar *) g_hash_table_lookup (key_value_pairs, "error");
|
|
||||||
+ if (g_strcmp0 (oauth2_error, GOA_OAUTH2_ACCESS_DENIED) == 0)
|
|
||||||
+ response_id = GTK_RESPONSE_CANCEL;
|
|
||||||
else
|
|
||||||
{
|
|
||||||
- /* this actually means that something unexpected happened, either we
|
|
||||||
- * did something wrong or the provider's flow changed */
|
|
||||||
- goa_debug ("URI format not recognized, DEFAULT BEHAVIOUR");
|
|
||||||
- goto default_behaviour;
|
|
||||||
+ g_set_error (&priv->error,
|
|
||||||
+ GOA_ERROR,
|
|
||||||
+ GOA_ERROR_NOT_AUTHORIZED,
|
|
||||||
+ _("Authorization response was \"%s\""),
|
|
||||||
+ oauth2_error);
|
|
||||||
+ response_id = GTK_RESPONSE_CLOSE;
|
|
||||||
}
|
|
||||||
+ g_hash_table_unref (key_value_pairs);
|
|
||||||
+ goto ignore_request;
|
|
||||||
|
|
||||||
ignore_request:
|
|
||||||
gtk_dialog_response (priv->dialog, response_id);
|
|
||||||
--
|
|
||||||
1.8.3.1
|
|
||||||
|
|
||||||
|
|
||||||
From 333822428ac130905f67023cb30aab78169505d5 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Debarshi Ray <debarshir@gnome.org>
|
|
||||||
Date: Fri, 18 Oct 2013 11:51:01 +0200
|
|
||||||
Subject: [PATCH 4/4] facebook: Update README
|
|
||||||
|
|
||||||
Fixes: https://bugzilla.gnome.org/710363
|
|
||||||
---
|
|
||||||
README | 7 +++++--
|
|
||||||
1 file changed, 5 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/README b/README
|
|
||||||
index dae1257..f80a891 100644
|
|
||||||
--- a/README
|
|
||||||
+++ b/README
|
|
||||||
@@ -9,8 +9,11 @@ OAuth 2.0: https://developers.facebook.com/docs/authentication/
|
|
||||||
Scopes: https://developers.facebook.com/docs/authentication/permissions/
|
|
||||||
|
|
||||||
Notes:
|
|
||||||
-The client-side flow returns the access_token and expires_in in the URI
|
|
||||||
-fragment, and does not provide a refresh_token.
|
|
||||||
+The client-side flow returns the access_token and expires_in in the URI's
|
|
||||||
+fragment, and does not provide a refresh_token. However, if the user denied
|
|
||||||
+access then the error is returned in the URI's query. The URIs look like this:
|
|
||||||
+ - <get_redirect_uri>?#access_token=...
|
|
||||||
+ - <get_redirect_uri>?error=access_denied...#_=_
|
|
||||||
|
|
||||||
|
|
||||||
Flickr
|
|
||||||
--
|
|
||||||
1.8.3.1
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
|||||||
Name: gnome-online-accounts
|
Name: gnome-online-accounts
|
||||||
Version: 3.10.1
|
Version: 3.10.2
|
||||||
Release: 2%{?dist}
|
Release: 1%{?dist}
|
||||||
Summary: Single sign-on framework for GNOME
|
Summary: Single sign-on framework for GNOME
|
||||||
|
|
||||||
Group: System Environment/Libraries
|
Group: System Environment/Libraries
|
||||||
@ -8,9 +8,6 @@ License: LGPLv2+
|
|||||||
URL: https://live.gnome.org/GnomeOnlineAccounts
|
URL: https://live.gnome.org/GnomeOnlineAccounts
|
||||||
Source0: http://download.gnome.org/sources/gnome-online-accounts/3.10/%{name}-%{version}.tar.xz
|
Source0: http://download.gnome.org/sources/gnome-online-accounts/3.10/%{name}-%{version}.tar.xz
|
||||||
|
|
||||||
# https://bugzilla.gnome.org/show_bug.cgi?id=710363
|
|
||||||
Patch0: %{name}-facebook.patch
|
|
||||||
|
|
||||||
BuildRequires: gcr-devel
|
BuildRequires: gcr-devel
|
||||||
BuildRequires: glib2-devel >= 2.35
|
BuildRequires: glib2-devel >= 2.35
|
||||||
BuildRequires: gtk3-devel >= 3.5.1
|
BuildRequires: gtk3-devel >= 3.5.1
|
||||||
@ -46,7 +43,6 @@ developing applications that use %{name}.
|
|||||||
|
|
||||||
%prep
|
%prep
|
||||||
%setup -q
|
%setup -q
|
||||||
%patch0 -p1
|
|
||||||
|
|
||||||
%build
|
%build
|
||||||
%configure \
|
%configure \
|
||||||
@ -117,6 +113,9 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
|
|||||||
%{_libdir}/goa-1.0/include
|
%{_libdir}/goa-1.0/include
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Tue Nov 12 2013 Debarshi Ray <rishi@fedoraproject.org> - 3.10.2-1
|
||||||
|
- Update to 3.10.2
|
||||||
|
|
||||||
* Fri Oct 18 2013 Debarshi Ray <rishi@fedoraproject.org> - 3.10.1-2
|
* Fri Oct 18 2013 Debarshi Ray <rishi@fedoraproject.org> - 3.10.1-2
|
||||||
- Adapt to changes in the redirect URI used by Facebook (GNOME #710363)
|
- Adapt to changes in the redirect URI used by Facebook (GNOME #710363)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user