gpt4 book ai didi

javascript - 授权时无法提取授权码

转载 作者:行者123 更新时间:2023-11-29 23:51:13 25 4
gpt4 key购买 nike

我有以下代码,可将用户重定向到授权 URL,一旦获得授权,就会返回包含授权代码的回调 URL。 (没有弹窗,授权在同一个窗口完成)

  authStart(e) {
e.preventDefault();
var options = {
client_id: 'some-id',
scopes: ["user:email", "notifications"]
};
var loginUrl = 'https://github.com/login/oauth/authorize?';
var authUrl = loginUrl + 'client_id=' + options.client_id + '&scope=' + options.scopes;

window.open(authUrl, "_parent");

var authCode = this.getAuthCode(window.location.href);
console.log(authCode);

getAuthCode(url){
var error = url.match(/[&\?]error=([^&]+)/);
if (error) {
throw 'Error getting authorization code: ' + error[1];
}
return url.match(/[&\?]code=([\w\/\-]+)/)[1];
},

运行此程序,我能够在窗口中成功获取回调 URL,但无法检索授权码。我认为 getAuthCode 函数在 window.open 语句之后立即被调用,并且由于窗口尚未完全加载,因此没有任何内容可检索。应该怎么做才能避免这种情况。我正在使用 ReactJS 和节点以防有帮助。

最佳答案

出于安全原因,您无法访问另一个浏览器窗口的 url,如果它不是来自同一来源。你会得到以下错误:

Uncaught DOMException: Blocked a frame with origin "http://yourdomain.com" from accessing a cross-origin frame. at yourcode.js(xx:xx)

要理解为什么这会成为一个问题,假设您单击恶意网站中的链接,然后该网站将能够操纵新打开的窗口。

关于javascript - 授权时无法提取授权码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42744467/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com