iFrameからUbuntu Oneにログインする

iFrameからUbuntu Oneにログインする

プライベート ポータル (お気に入りの Web サイトにすべて自動的にログインできるプライベート Web サイト) を作成しています。すべての Web サイトは iframe に読み込まれます。

ubuntuone に自動ログインする方法を探しています。自動入力フォームを投稿しようとしましたが、ubuntuone は認証ごとに一意のキーを使用します。同じドメインではないため、iframe の外部から jQuery を使用してフォームを送信することはできません。

たぶんPHPでしょうか? この郵便受けUbuntu One Auth と PHP について話しましたが、PHP が API とどのようにやり取りできるかわかりません。例をいくつか教えていただけますか?

アイデアとご協力に感謝します。

答え1

これを行う簡単な方法は、ブラウザでUbuntu Oneにサインインし、出典:iframe 内。少なくともしばらくはサインインしたままになります (セキュリティのため、時々サインアウトされます)。

難しい方法、あなたが確実にいつもサインインしたら、URLを取得するhttps://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.jsも必要です。http://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>

関連情報