从 iFrame 登录 Ubuntu One

从 iFrame 登录 Ubuntu One

我正在创建一个私人门户(一个私人网站,我会自动登录所有我喜欢的网站)。每个网站都加载在 iframe 中。

我正在寻找一种自动登录 ubuntuone 的方法。我尝试发布一个自动完成的表单,但 ubuntuone 对每次身份验证都使用一个唯一的密钥。我无法使用 jquery 从 iframe 外部提交表单,因为它不是同一个域。

也许用 PHP ? 这个帖子讨论 Ubuntu one auth 和 PHP,但我不知道 PHP 如何与 API 交互。你能举个例子吗?

感谢您的想法和帮助。

答案1

最简单的方法是在浏览器中登录 Ubuntu One,然后输入https://one.ubuntu.com在 iframe 中;您至少会保持登录状态一段时间(并且为了安全起见,您偶尔会退出登录)。

如果你想确保自己总是登录后,即可获取 URLhttps://one.ubuntu.com/api/1.0/from_oauth/?next=/并使用有效的 Ubuntu One OAuth 令牌对其进行签名。您可以使用 Python 库检索令牌https://launchpad.net/ubuntuone-couch或者手动从你的 Ubuntu 密钥环获取。一旦你用该 OAuth 令牌对 URL 进行签名,就将 OAuth 签名序列化到 URL 中(这样你将获得一个 URL,如下所示

然后在 Web 浏览器中打开它。该 URL 将带您进入浏览器中的 Ubuntu One,并以您的身份登录。

您可能会发现以下页面很有用,它使用 JavaScript 进行签名:编辑此页面以包含你的令牌详细信息,然后您可以在浏览器中打开此页面并将其加入书签,或者在 iframe 中使用 file:// URL 链接到它,它应该可以正常工作。它还需要 oauth.js 和 sha1.jshttp://oauth.googlecode.com/svn/code/javascript/

<!doctype html>
<html><head><title>Log in to Ubuntu One without password</title>
<script src="sha1.js"></script><script src="oauth.js"></script>
</head><body>
<script>
var url = "https://one.ubuntu.com/api/1.0/from_oauth/"
var accessor = {
  token: "TTTTTTTT",
  tokenSecret: "SSSSSSSSS",
  consumerKey : "CCCCCCCC",
  consumerSecret: "ssssssssss"
};
var message = {
  action: url,
  method: "GET",
  parameters: {next: "/"}
};
OAuth.completeRequest(message, accessor);
OAuth.SignatureMethod.sign(message, accessor);
url = url + '?' + OAuth.formEncode(message.parameters);
location.href = url;
</script>
</body>
</html>

相关内容