Ich habe eine Webanwendung, für die ich versuche, die OAuth-Funktionalität von Twitter zu nutzen. Diese Anwendung enthält einen Link, der den Benutzer zur Eingabe seiner Twitter-Anmeldedaten auffordert. Wenn ein Benutzer auf diesen Link klickt, wird über JavaScript ein neues Fenster geöffnet. Dieses Fenster dient als Dialog. Dies wird wie folgt erreicht:
HauptSeite:
<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);
}
Wenn ein Benutzer auf den Link klickt, wird er von der Seite prompt.aspx auf die Website von Twitter umgeleitet. Auf der Twitter-Website hat der Benutzer die Möglichkeit, seine Twitter-Anmeldedaten einzugeben. Wenn er seine Zugangsdaten eingegeben hat, wird er wieder auf meine Website umgeleitet. Dies wird durch eine Callback-URL erreicht, die für Anwendungen auf der Twitter-Site festgelegt werden kann.
Wenn der Rückruf erfolgt, wird der Benutzer zu "/twitter/confirm.aspx" auf meiner Website im Dialogfenster weitergeleitet. Wenn dies geschieht, möchte ich den Inhalt von "promptDiv" so aktualisieren, dass er "Sie haben sich erfolgreich mit Twitter verbunden" lautet, um den Link zu ersetzen und den Dialog zu schließen. Dies dient dem Zweck, den Benutzer darüber zu informieren, dass er diesen Schritt erfolgreich abgeschlossen hat. Ich kann das Dialogfenster erfolgreich schließen. Wenn ich jedoch versuche, das HTML-DOM zu aktualisieren, erhalte ich eine Fehlermeldung, die besagt: "Error: Permission denied to get property Window.document". Um das HTML-DOM zu aktualisieren, habe ich versucht, das folgende Skript in "/twitter/confirm.aspx" zu verwenden:
// Error is thrown on the first line.
var confirmDiv = window.opener.document.getElementById("confirmDiv");
if (confirmDiv != null)
{
// Update the contents
}
window.close();
Ich habe dann versucht, den HTML-Code zu lesen, um zu sehen, ob ich mit dem folgenden Skript überhaupt auf das DOM zugreifen kann:
alert(window.opener.document.body.innerHTML);
Als ich dies versuchte, erhielt ich immer noch die Fehlermeldung "Berechtigung verweigert". Ich weiß, dass dies etwas mit Cross-Site-Scripting zu tun hat. Ich weiß jedoch nicht, wie ich das Problem beheben kann. Wie kann ich dieses Problem beheben? Habe ich meine Anwendung falsch strukturiert? Wie aktualisiere ich das HTML-DOM, nachdem ein Benutzer zu meiner Website zurückgeleitet wurde?
Vielen Dank für Ihre Hilfe!