läuft Es gibt verschiedene Ansätze, die gültig sind, so wählen Sie die Sie bevorzugen/passt mit Ihrem Code am besten.
Verwenden promise.then()
function fetchOAuth2()
{
var redirectURL = browser.identity.getRedirectURL() + "page.html";
console.log(redirectURL);
var clientID = "CLIENT ID";
var authURL = "https://trakt.tv/oauth/authorize"; // API I'm using
authURL += `?response_type=code`;
authURL += `&client_id=${clientID}`;
authURL += `&redirect_uri=${redirectURL}`;
console.log(authURL);
browser.identity.launchWebAuthFlow({
interactive: true,
url: authURL
})
.then(function(authResult) {
// do something with authResult
})
}
Wenn Sie die authResult außerhalb dieser Funktion zugreifen möchten, dann müssen Sie das Versprechen, zurückzukehren, und then
sie von der Aufrufstelle, dh
function fetchOAuth2()
{
var redirectURL = browser.identity.getRedirectURL() + "page.html";
console.log(redirectURL);
var clientID = "CLIENT ID";
var authURL = "https://trakt.tv/oauth/authorize"; // API I'm using
authURL += `?response_type=code`;
authURL += `&client_id=${clientID}`;
authURL += `&redirect_uri=${redirectURL}`;
console.log(authURL);
return browser.identity.launchWebAuthFlow({
interactive: true,
url: authURL
})
}
fetchOAuth2().then(function(authResult) {
// do something with auth result
});
Verwenden ES7 async/erwarten
Dies ist eine relativ neue Sprachfunktion, wird jedoch in FF54 unterstützt. Wenn Sie andere Browser unterstützen müssen, müssen Sie Babel verwenden, um Kompatibilität zu ermöglichen.
async function fetchOAuth2()
{
var redirectURL = browser.identity.getRedirectURL() + "page.html";
console.log(redirectURL);
var clientID = "CLIENT ID";
var authURL = "https://trakt.tv/oauth/authorize"; // API I'm using
authURL += `?response_type=code`;
authURL += `&client_id=${clientID}`;
authURL += `&redirect_uri=${redirectURL}`;
console.log(authURL);
var authResult = await browser.identity.launchWebAuthFlow({
interactive: true,
url: authURL
});
// do something with authResult
}
Vielen Dank für Ihre schnelle Antwort! Und danke für die vielen Möglichkeiten + Infos, immer gut zu wissen! Leider schien es nicht den Trick zu tun. Dies könnte eine Webextension-Sache sein (da browser.identity.launchWebAuthFlow() ein neues Fenster öffnet), aber aus irgendeinem Grund funktioniert keine dieser Lösungen. Ich habe immer einen Test nach warten/innerhalb der foo.then (console.log ("test")), aber es gibt keine Konsolenausgabe. Irgendwelche Ideen? – FStijn
Suchen Sie nach Fehlern in der Konsole, aber verwenden Sie Strg + J, um die ** Browser ** -Konsole zu öffnen, sodass auch Fehler von Erweiterungen angezeigt werden. – trincot
@trincot Alles, was ich bekam war: nicht erreichbaren Code nach return Anweisung in btgallery.js: 1: 52329 (nicht meiner, soweit ich weiß) ReferenceError: Ereignis ist nicht definiert pop.js: 4: 6264 (nicht meins entweder, soweit ich weiß) Nichts von meiner eigenen Anwendung, leider – FStijn