+static void
+got_password_passwd_cb (GObject *source,
+ GAsyncResult *result,
+ gpointer user_data)
+{
+ GoaPasswordBased *password = (GoaPasswordBased *) source;
+ AuthData *data = user_data;
+ gchar *passwd;
+ GError *error = NULL;
+
+ if (!goa_password_based_call_get_password_finish (password,
+ &passwd, result, &error))
+ {
+ DEBUG ("Failed to get password: %s", error->message);
+ fail_auth (data);
+ g_clear_error (&error);
+ return;
+ }
+
+ DEBUG ("Got password for %s", tp_proxy_get_object_path (data->account));
+
+ empathy_sasl_auth_password_async (data->channel, passwd, auth_cb, data);
+ g_free (passwd);
+}
+