2

シンプルなVala/Gtk Twitterアプリを作成しようとしていますが、なんとかツイートを送信できました。ただし、ユーザーは毎回認証する必要があります。これには、URLにアクセスし、クリックしてアプリに投稿の許可を与え、PINをコピーし、そのPINをアプリに貼り付ける必要があります。ツイートごとに。

この認証情報をGNOMEキーリングに保存したいと思います。ただし、OAuthについてはほとんど何も知らず、キーリングについても何も知りません。

OAuthデータをGnomeキーリングに保存するにはどうすればよいですか?ヴァラの回答にはボーナスポイントが付与されますが、どの言語の回答でも受け付けます。:)

4

1 に答える 1

5

Dbus プロトコルを介して "Secret Service" と通信するlibsecretライブラリを使用できます。

最初にパスワード スキーマを定義する必要があります。これは、後でトークン ストア/抽出に使用されます。

ヴァラの例:

var example_schema = new Secret.Schema ("org.yor_schema.name",Secret,SchemaFlags.NONE,
    "number", Secret.SchemaAttributeType.INTEGER,
    "string", Secret.SchemaAttributeType.STRING);

次に、トークンを保存する必要があります。

var attributes = new GLib.HashTable<string,string> ();
attributes["number"] = "18";
attributes["string"] = "Hello";

Secret.password_storev.begin(example_schema,attributes,Secret.COLLECTION_DFAULT,
    "Label","Token",null,(obj,async_res) => {
        bool res = Secret.password_store.end(async_res);
        /* Password has been stored - do something ... */
});

保存されたトークンを抽出するには:

var attributes = new GLib.HashTable<string,string> ();
attributes["number"] = "18";
attributes["string"] = "Hello";

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

というパッケージ名libsecret-1

コンパイルするには、makefile に次のフラグを追加します。

AM_VALAFLAGS = \
    --pkg=libsecret-1
于 2013-01-13T20:07:15.520 に答える