![从 iFrame 登录 Ubuntu One](https://linux22.com/image/1035832/%E4%BB%8E%20iFrame%20%E7%99%BB%E5%BD%95%20Ubuntu%20One.png)
我正在创建一个私人门户(一个私人网站,我会自动登录所有我喜欢的网站)。每个网站都加载在 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>