使用 C++ 访问 Ubuntu 的密码存储

5 ubuntu-one c++

我正在尝试用 C++ 编写一个应用程序,该应用程序使用存储在 Gnome 密钥环中的 Ubuntu One OAuth 令牌,但在 Gnome 或 Ubuntu One 开发人员站点上找不到任何文档来告诉我如何执行此操作。

Ubuntu One 站点表示,对 Ubuntu One 服务的所有请求都必须使用有效的 Ubuntu One OAuth 令牌进行签名,但它没有说明如何执行此操作。

Keyring API 的 Gnome API 参考只是运行一个没有任何上下文的函数列表,或者更重要的是#include,我应该用来将这些函数导入我的程序的指令。

有谁知道我在哪里可以找到任何帮助我访问 Ubuntu One OAuth 令牌的文档?

HMM*_*HMM 4

可能没有文档。但有来源和例子。有几个使用 ubuntu 的 C 程序,您可以将其用作指南。

您可以尝试运行以下命令(当然,如果您的存储库包含源):

apt-get source libubuntuone
Run Code Online (Sandbox Code Playgroud)

其次是

sudo apt-get build-dep libubuntuone
Run Code Online (Sandbox Code Playgroud)

并查看来源。我相信这可能会引起兴趣。上u1-music-store.c,第 229 行。

static void
get_credentials (U1MusicStore *music_store,
                 gchar **oauth_consumer_token,
                 gchar **oauth_consumer_secret,
                 gchar **oauth_token,
                 gchar **oauth_token_secret)
{
        SyncdaemonCredentials *credentials;

        *oauth_consumer_token = *oauth_consumer_secret = *oauth_token = *oauth_token_secret = NULL;

        /* Get the OAuth token from the keyring */
         if ((credentials = syncdaemon_authentication_find_credentials (
                      syncdaemon_daemon_get_authentication (music_store->priv->syncdaemon)))) {
                *oauth_consumer_token = g_strdup (syncdaemon_credentials_get_consumer_key (credentials));
                *oauth_consumer_secret = g_strdup (syncdaemon_credentials_get_consumer_secret (credentials));
                *oauth_token = g_strdup (syncdaemon_credentials_get_token (credentials));
                *oauth_token_secret = g_strdup (syncdaemon_credentials_get_token_secret (credentials));
         }
}
Run Code Online (Sandbox Code Playgroud)

您正在寻找的库是 libsyncdaemon-1.0-dev。至少在10.10。据我所知,您不需要 gnome 的密钥环 API。