從 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)

然後在網頁瀏覽器中打開它。該 URL 將帶您進入瀏覽器中的 Ubuntu One,並以您的身分登入。

您可能會發現以下頁面很有用,它在 JavaScript 中進行簽名:編輯此頁面以包含你的令牌詳細信息,然後您可以在瀏覽器中打開此頁面並將其添加為書籤,或者使用 file:// URL 在 iframe 中鏈接到它,它應該可以工作。它還需要 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>

相關內容