How to get user's password?

You can't just create a Secret.Prompt like that. It is an object that is created by the libsecret library internally.

There is a Vala example on how to use libsecret here:

https://developer-old.gnome.org/libsecret/0.18/vala-examples.html

I will summarize the example as an answer below.

You have to first create a schema:

var example = new Secret.Schema ("org.example.Password", Secret.SchemaFlags.NONE,
                             "number", Secret.SchemaAttributeType.INTEGER,
                             "string", Secret.SchemaAttributeType.STRING,
                             "even", Secret.SchemaAttributeType.BOOLEAN);

Then you can store properties into the schema:

var attributes = new GLib.HashTable<string,string> ();
attributes["number"] = "8";
attributes["string"] = "eight";
attributes["even"] = "true";

Secret.password_storev.begin (example_schema, attributes, Secret.COLLECTION_DEFAULT,
                              "The label", "the password", null, (obj, async_res) => {
    bool res = Secret.password_store.end (async_res);
    /* ... do something now that the password has been stored */
});

And finally retrieve them again:

var attributes = new GLib.HashTable<string,string> ();
attributes["number"] = "8";
attributes["string"] = "eight";
attributes["even"] = "true";

Secret.password_lookupv.begin (example_schema, attributes, null, (obj, async_res) => {
    string password = Secret.password_lookup.end (async_res);
});

For more details read the whole libsecret documentation at:

https://developer-old.gnome.org/libsecret/0.18/index.html