static void set_account_password_cb (GObject *source, GAsyncResult *result, gpointer user_data) { TpAccount *tp_account = (TpAccount *) source; AuthContext *ctx = user_data; AuthContext *new_ctx; GError *error = NULL; if (!tpaw_keyring_set_account_password_finish (tp_account, result, &error)) { DEBUG ("Failed to set empty password on UOA account: %s", error->message); auth_context_done (ctx); return; } new_ctx = auth_context_new (ctx->channel, ctx->service); auth_context_free (ctx); if (new_ctx->session != NULL) { /* The trick worked! */ request_password (new_ctx); return; } DEBUG ("Still can't get a signon session, even after setting empty pwd"); auth_context_done (new_ctx); }
static gboolean auth_message_handler (GSAuthMessageStyle style, const char *msg, char **response, gpointer data) { gboolean ret; g_message ("Got message style %d: '%s'", style, msg); ret = TRUE; switch (style) { case GS_AUTH_MESSAGE_PROMPT_ECHO_ON: break; case GS_AUTH_MESSAGE_PROMPT_ECHO_OFF: { char *password; password = request_password (msg); *response = password; } break; case GS_AUTH_MESSAGE_ERROR_MSG: break; case GS_AUTH_MESSAGE_TEXT_INFO: break; default: g_assert_not_reached (); } return ret; }
static void auth_cb (GObject *source, GAsyncResult *result, gpointer user_data) { TpChannel *channel = (TpChannel *) source; AuthContext *ctx = user_data; GError *error = NULL; if (!empathy_sasl_auth_finish (channel, result, &error)) { DEBUG ("SASL Mechanism error: %s", error->message); g_clear_error (&error); request_password (ctx); } else { DEBUG ("Auth on %s suceeded", tp_proxy_get_object_path (channel)); auth_context_done (ctx); } }