I recommend against using glitchnyc's suggestion because disabling authentication is obviously a concern. I resolved the authentication issue by creating a wp_getUsersBlogs function which accepts the correct args.
Here's a patch. Hopefully this works.
--- xmlrpc.php.original 2008-06-09 13:07:19.000000000 -0400
+++ xmlrpc.php 2008-06-09 13:04:48.000000000 -0400
@@ -89,6 +89,7 @@
'wp.getCommentCount' => 'this:wp_getCommentCount',
'wp.getPostStatusList' => 'this:wp_getPostStatusList',
'wp.getPageStatusList' => 'this:wp_getPageStatusList',
+ 'wp.getUsersBlogs' => 'this:wp_getUsersBlogs',
// Blogger API
'blogger.getUsersBlogs' => 'this:blogger_getUsersBlogs',
@@ -744,6 +745,44 @@
return get_page_statuses( );
}
+ function wp_getUsersBlogs( $args ) {
+
+ $this->escape( $args );
+
+ $username = $args[0];
+ $password = $args[1];
+
+ if (!$this->login_pass_ok($username, $password)) {
+ return new IXR_Error( 403, __( 'Bad login/pass combination.' ) );
+ }
+
+ do_action('xmlrpc_call', 'wp.getUsersBlogs');
+
+ $user = set_current_user(0, $username);
+
+ $blogs = (array) get_blogs_of_user($user->ID);
+
+ $struct = array();
+
+ foreach ( $blogs as $blog ) {
+ $blog_id = $blog->userblog_id;
+
+ switch_to_blog($blog_id);
+
+ $is_admin = current_user_can('level_8');
+
+ $struct[] = array(
+ 'isAdmin' => $is_admin,
+ 'url' => get_option('home') . '/',
+ 'blogid' => $blog_id,
+ 'blogName' => get_option('blogname')
+ );
+
+ restore_current_blog();
+ }
+
+ return $struct;
+ }
/* Blogger API functions
* specs on http://plant.blogger.com/api and http://groups.yahoo.com/group/bloggerDev/