Как сохранить учетные данные OAuth с помощью Gnome Keyring
Я пытаюсь создать простое приложение для Twitter на Vala/Gtk, и мне удалось отправить твиты; тем не менее, пользователь должен проходить аутентификацию каждый раз, что подразумевает переход на URL, щелчок, чтобы дать моему приложению разрешение на публикацию, копирование PIN-кода и вставку указанного PIN-кода в мое приложение. За каждый твит.
Я хотел бы сохранить эту информацию аутентификации в связке ключей GNOME; однако, я почти ничего не знаю об OAuth и ничего не знаю о связке ключей.
Как я могу сохранить данные OAuth в связку ключей Gnome? Я приму ответы на любом языке, хотя за ответы Вала будут начисляться бонусные баллы.:)
1 ответ
Вы можете использовать библиотеку libsecret, которая взаимодействует с "Секретной службой" по протоколу Dbus.
Сначала вам нужно определить схему пароля, которая будет использоваться позже для хранения / извлечения токена.
Вала пример:
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
,
Для компиляции добавьте следующий флаг в ваш make-файл.
AM_VALAFLAGS = \
--pkg=libsecret-1