Durch Ausführen des folgenden Codes erscheint das Authentifizierungsfenster und der Benutzer bestätigt die Anmeldung. Dieser Teil funktioniert. Nach dem Klicken auf die Schaltfläche "Autorisieren" wird auf die vorherige Registerkarte im selben Fenster umgeleitet (im Popup-Fenster nicht im übergeordneten Fenster). Wie kann ich dieses Popup-Fenster schließen, nachdem die Autorisierung vom Benutzer bestätigt wurde und wie kann ich den Autorisierungscode von der URL abrufen? Zum Beispiel im folgenden Code, der erste "console.log (event.url);" wird nicht ausgeführt.Wie wird die Authentifizierung mit Drittanbieter-Login in Angularjs gehandhabt?
var redirectUri = "http://localhost:8100/callback";
var ref = window.open('https://www.example.com/oauth/authorize?client_id=' + clientID + '&redirect_uri=' + redirectUri + '&scope=write&response_type=code&approval_prompt=force', '_blank', 'location=no,clearsessioncache=yes,clearcache=yes');
ref.addEventListener('loadstart', function (event) { // THIS IS NOT TRIGGERED FOR SOME REASON
console.log(event.url);
if ((event.url).indexOf(redirectUri) === 0) {
requestToken = (event.url).split("code=")[1];
$http.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
$http({
method: "post",
url: "https://www.example.com/oauth/token",
data: "client_id=" + clientId + "&client_secret=" + clientSecret + "&code=" + requestToken
})
.success(function (data) {
$scope.data = data;
console.log(event.url);
})
.error(function (data, status) {
deferred.reject("Problem authenticating");
});
}
});
Im Folgenden finden Sie die in der Anwendung verwendeten Registerkarten. Wie kann ich nach einem Rückruf zu meinem tab.example zurückkehren?
macht keinen Sinn, dass Sie 'console.log' nicht ausgeführt wurde, wenn der 'http-Post' darunter war. Manchmal wird ein Protokoll nicht im Konsolenfenster b/c des Kontexts angezeigt. Aber das heißt nicht, dass es nicht ausgeführt wurde. Versuchen Sie einen Unterbrechungspunkt an der 'console.log' –
im Grunde die Fenster-Handler nicht auslösen, nichts wird in diesem Handler ausgeführt. Ich habe versucht mit mehreren Handlern, nichts ist ausgelöst/ – Andrei
scheint es viel fehlt in Ihrem Code. Ich habe Probleme zu verstehen, was getan wurde und warum. Zum Beispiel, warum hören Sie für 'Loadstart' Event? Woher wird es emittiert? Erwarten Sie, dass Ihre App ein Ereignis aus einem anderen Fenster empfängt? –