gpt4 book ai didi

oauth - 如何使用 Gnome Keyring 存储 OAuth 凭证

转载 作者:行者123 更新时间:2023-12-02 01:16:34 25 4
gpt4 key购买 nike

我正在尝试构建一个简单的 Vala/Gtk Twitter 应用程序,并且我已经成功地发送了推文;但是,用户每次都必须进行身份验证,这需要转到 URL,单击以授予我的应用程序发布权限,复制 PIN,然后将所述 PIN 粘贴到我的应用程序中。对于每条推文。

我想将此身份验证信息存储在 GNOME Keyring 中;但是,我对 OAuth 几乎一无所知,对 Keyring 也一无所知。

如何将 OAuth 数据存储到 Gnome key 环中?我会接受任何语言的答案,尽管 Vala 的答案将获得奖励积分。 :)

最佳答案

您可以使用 libsecret 库,它通过 Dbus 协议(protocol)与“ secret 服务”通信。

首先您需要定义一个密码模式,稍后将用于 token 存储/提取。

范例:

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

现在您应该存储您的 token :

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 ... */
});

提取存储的 token :

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

关于oauth - 如何使用 Gnome Keyring 存储 OAuth 凭证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10669656/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com