diff --git a/src/polkit-dbus/polkit-dbus.c b/src/polkit-dbus/polkit-dbus.c
index f7be03f..cad4a76 100644
--- a/src/polkit-dbus/polkit-dbus.c
+++ b/src/polkit-dbus/polkit-dbus.c
@@ -214,11 +214,17 @@ polkit_session_new_from_objpath (DBusConnection *con, const char *objpath, uid_t
                                 dbus_message_unref (reply);
                         goto out;
                 }
+                /* GetUnixUser API Changed in CK 0.3.0 */
                 if (!dbus_message_get_args (reply, NULL,
-                                            DBUS_TYPE_INT32, &uid,
+                                            DBUS_TYPE_UINT32, &uid,
                                             DBUS_TYPE_INVALID)) {
-                        kit_warning ("Invalid GetUnixUser reply from CK");
-                        goto out;
+                        /* try the older API */
+                        if (!dbus_message_get_args (reply, NULL,
+                                                    DBUS_TYPE_INT32, &uid,
+                                                    DBUS_TYPE_INVALID)) {
+                                kit_warning ("Invalid GetUnixUser reply from CK");
+                                goto out;
+                        }
                 }
                 dbus_message_unref (message);
                 dbus_message_unref (reply);
@@ -1326,16 +1332,21 @@ polkit_tracker_dbus_func (PolKitTracker *pk_tracker, DBusMessage *message)
 
                 dbus_error_init (&error);
                 seat_objpath = dbus_message_get_path (message);
-                if (!dbus_message_get_args (message, &error, 
-                                            DBUS_TYPE_STRING, &session_objpath, 
+                /* API fixed in CK 0.3 to match spec */
+                if (!dbus_message_get_args (message, &error,
+                                            DBUS_TYPE_OBJECT_PATH, &session_objpath,
                                             DBUS_TYPE_INVALID)) {
+                        if (!dbus_message_get_args (message, &error,
+                                                    DBUS_TYPE_STRING, &session_objpath,
+                                                    DBUS_TYPE_INVALID)) {
 
-                        /* TODO: should be _pk_critical */
-                        kit_warning ("The SessionAdded signal on the org.freedesktop.ConsoleKit.Seat "
-                                   "interface for object %s has the wrong signature! "
-                                   "Your system is misconfigured.", seat_objpath);
+                                /* TODO: should be _pk_critical */
+                                kit_warning ("The SessionAdded signal on the org.freedesktop.ConsoleKit.Seat "
+                                             "interface for object %s has the wrong signature! "
+                                             "Your system is misconfigured.", seat_objpath);
 
-                        goto out;
+                                goto out;
+                        }
                 }
 
                 /* TODO: add to sessions - see polkit_tracker_is_authorization_relevant() */
@@ -1353,16 +1364,21 @@ polkit_tracker_dbus_func (PolKitTracker *pk_tracker, DBusMessage *message)
 
                 dbus_error_init (&error);
                 seat_objpath = dbus_message_get_path (message);
-                if (!dbus_message_get_args (message, &error, 
-                                            DBUS_TYPE_STRING, &session_objpath, 
+                /* API fixed in CK 0.3 to match spec */
+                if (!dbus_message_get_args (message, &error,
+                                            DBUS_TYPE_OBJECT_PATH, &session_objpath,
                                             DBUS_TYPE_INVALID)) {
+                        if (!dbus_message_get_args (message, &error,
+                                                    DBUS_TYPE_STRING, &session_objpath,
+                                                    DBUS_TYPE_INVALID)) {
 
-                        /* TODO: should be _pk_critical */
-                        kit_warning ("The SessionRemoved signal on the org.freedesktop.ConsoleKit.Seat "
-                                   "interface for object %s has the wrong signature! "
-                                   "Your system is misconfigured.", seat_objpath);
+                                /* TODO: should be _pk_critical */
+                                kit_warning ("The SessionRemoved signal on the org.freedesktop.ConsoleKit.Seat "
+                                             "interface for object %s has the wrong signature! "
+                                             "Your system is misconfigured.", seat_objpath);
 
-                        goto out;
+                                goto out;
+                        }
                 }
 
                 _remove_caller_by_session (pk_tracker, session_objpath);