電話(または電気)などのプリペイドカードの現在の残高を表示するgnome-shell拡張機能を作成しています。これには特定のサービスの資格情報が必要なため、パスワードを gsettings に保存するのではなく、gnome キーリングのエントリとして保存します。
現在、キーリングにログインとパスワードを要求する同期方法を使用しています
const GnomeKeyring = imports.gi.GnomeKeyring;
GnomeKeyring.unlock_sync(null, null)
// the variable 'id' is a concat of login '@'webservice url
var attrs = GnomeKeyring.Attribute.list_new()
GnomeKeyring.Attribute.list_append_string(attrs, 'id', id)
var result = GnomeKeyring.find_items_sync(
GnomeKeyring.ItemType.GENERIC_SECRET,
attrs
)
if (result[0] != GnomeKeyring.Result.OK) return
log(' => password '+result[1][0].secret)
log(' keyring id = '+result[1][0].item_id)
log(' keyring = '+result[1][0].keyring)
この同期。アプローチの弱点は、キーリングがすでに開いている必要があるか、パスワードダイアログが表示されることです。自動ログインで gnome-shell を起動すると、この同期呼び出しはシェルの実際の起動をまったくブロックするため、キーリングのパスワードを入力する可能性はありません。
Gnome Developer Wikiは非同期メソッドに名前を付けています
- GnomeKeyring.unlock
- GnomeKeyring.find_items
しかし、どちらもjavascript 環境では見つかりません。
非同期関数が欠落していないことを確認するには、fedora23 の下の GnomeKeyring-Gir ファイルをどこで見つけることができますか? 非同期のキーリングのオープンとパスワードの取得を実現するにはどうすればよいですか? まったく異なる可能性のあるアプローチを見ている人はいますか? 少しずつ助かる…