【发布时间】:2017-08-02 08:06:30
【问题描述】:
我有以下代码将用户重定向到身份验证 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 和 node,以防万一。
【问题讨论】:
标签: javascript reactjs authentication oauth