[gthumb] facebook: fixed the authorization process



commit a3fb7f7f67bde935d9ebf7042cf8be1ad77e364d
Author: Paolo Bacchilega <paobac src gnome org>
Date:   Sat Apr 4 21:03:43 2015 +0200

    facebook: fixed the authorization process
    
    bug due to facebook adding a '?' after the redirect uri.

 extensions/facebook/facebook-service.c |   29 ++++++++++++++++-------------
 1 files changed, 16 insertions(+), 13 deletions(-)
---
diff --git a/extensions/facebook/facebook-service.c b/extensions/facebook/facebook-service.c
index d6d3e79..09bf484 100644
--- a/extensions/facebook/facebook-service.c
+++ b/extensions/facebook/facebook-service.c
@@ -260,24 +260,27 @@ ask_authorization_dialog_redirected_cb (OAuthAskAuthorizationDialog *dialog,
        uri = oauth_ask_authorization_dialog_get_uri (dialog);
        if (g_str_has_prefix (uri, FACEBOOK_REDIRECT_URI)) {
                const char *uri_data;
-               GHashTable *data;
-               const char *access_token;
-               const char *state;
-
-               uri_data = uri + strlen (FACEBOOK_REDIRECT_URI "#");
-
-               data = soup_form_decode (uri_data);
-               access_token = NULL;
-               state = g_hash_table_lookup (data, "state");
-               if (g_strcmp0 (state, self->priv->state) == 0) {
-                       access_token = g_hash_table_lookup (data, "access_token");
-                       _facebook_service_set_access_token (self, access_token);
+               GHashTable *data = NULL;
+               const char *access_token = NULL;
+
+               uri_data = strchr (uri, '#');
+               if (uri_data != NULL) {
+                       const char *state;
+
+                       uri_data = uri_data + 1;
+                       data = soup_form_decode (uri_data);
+                       state = g_hash_table_lookup (data, "state");
+                       if (g_strcmp0 (state, self->priv->state) == 0) {
+                               access_token = g_hash_table_lookup (data, "access_token");
+                               _facebook_service_set_access_token (self, access_token);
+                       }
                }
 
                gtk_dialog_response (GTK_DIALOG (dialog),
                                     (access_token != NULL) ? GTK_RESPONSE_OK : GTK_RESPONSE_CANCEL);
 
-               g_hash_table_destroy (data);
+               if (data != NULL)
+                       g_hash_table_destroy (data);
        }
 }
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]