TwitterのOAuth機能を使用しようとしているWebアプリケーションがあります。このアプリケーションには、ユーザーにTwitter資格情報の入力を求めるリンクがあります。ユーザーがこのリンクをクリックすると、JavaScriptを介して新しいウィンドウが開きます。このウィンドウはダイアログとして機能します。これは、のように実現されます。JavaScript - クロスサイトスクリプティング - 許可が拒否されました
メインページ:
<div id="promptDiv"><a href="#" onclick="launchDialog('twitter/prompt.aspx');">Provide Credentials</a></div>
...
function launchDialog(url) {
var specs = "location=0,menubar=0,status=0,titlebar=0,toolbar=0";
var dialogWindow = window.open(url, "dialog", specs, true);
}
は、ユーザーがリンクをクリックすると、それらはprompt.aspxページからTwitterのサイトにリダイレクトされます。 Twitterサイトでは、ユーザーは自分のTwitter資格情報を入力するオプションを持っています。資格情報を提供すると、自分のサイトにリダイレクトされます。これは、Twitterのサイト上のアプリケーションに設定できるコールバックURLを通じて実現されます。
コールバックが発生すると、ユーザーはダイアログウィンドウの自分のサイトの "/twitter/confirm.aspx"にリダイレクトされます。この場合、私は "promptDiv"の内容を更新して、 "あなたは正常にTwitterに接続しました"と言い、リンクを置き換えてダイアログを閉じます。これは、このステップを正常に完了したことをユーザーに通知する目的に役立ちます。私は正常にダイアログウィンドウを閉じることができます。しかし、HTML DOMを更新しようとすると、「エラー:許可が拒否され、プロパティWindow.documentを取得できません」というエラーが表示されます。 HTML DOMを更新しようとする試みで、私は「/twitter/confirm.aspx」で次のスクリプトを使用してみました:
// Error is thrown on the first line.
var confirmDiv = window.opener.document.getElementById("confirmDiv");
if (confirmDiv != null)
{
// Update the contents
}
window.close();
私は、ちょうど私もDOM経由にアクセスできるかどうかを確認するためにHTMLを読み込むしようとしました次のスクリプト:
alert(window.opener.document.body.innerHTML);
私がこれを試みたとき、私はまだ "Permission denied"エラーが出ています。私はこれがクロスサイトスクリプティングと関係があることを知っています。しかし、私はそれを解決する方法を知らない。この問題を解決するにはどうすればよいですか?アプリケーションを正しく構成していないのですか?ユーザーが自分のサイトにリダイレクトされた後にHTML DOMを更新するにはどうすればよいですか?
ありがとうございました!
「場所= 0、メニューバー= 0、ステータス= 0、タイトルバー= 0、ツールバー= 0」「あなたは実際に私がTwitterのサイトにいることを確認するあらゆる方法を隠しています。 。私はこのような「ダイアログ」を信頼して、自分の資格情報を入力することはまずありません。 –