0
我已阅读关于window.opener的信息,但它似乎对我无效。 (谷歌,框等) 所有我从那里关心,得到的URL,因为它有访问令牌,令牌类型和到期。oauth在弹出窗口中登录后将控制权交还给父窗口
使用此代码,谷歌网址打开罚款,我可以登录(并关闭弹出窗口),但不能将URL传递给其他方法。
按钮点击处理程序:
var url = "https://accounts.google.com/o/oauth2/v2/auth?scope="+ scope +
"&redirect_uri="+ redirect_uri +
"&response_type=token&client_id=" + client_id;
this.oauthSignIn(url, redirect_uri).then(
lang.hitch(this, function (data) {
console.log("here 0 " + data);
this._getTokenValue(data, 'access_token').then(function (data1) {
console.log("here 2 " + data1);
});
}),
);
CONSOLE.LOG打印效果与预期的网址,但同样的“数据”不能传递到this_getTokenValue不管我怎么努力。
this.oauthSigin:
oauthSignIn: function(url, redirect_uri) {
var dfd = new Deferred();
var win = window.open(url, "_blank", 'width=800, height=600');
var pollTimer = window.setInterval(function() {
try {
if (win.document.URL.indexOf(redirect_uri) != -1) {
window.clearInterval(pollTimer);
win.close();
dfd.resolve(win.document.URL);
}
} catch(e) {
}
},100);
return dfd;
}
我不能似乎永远能够通过URL这此功能。
_getTokenValue: function(url, name) {
var dfd = new Deferred();
name = name.replace(/[[]/,"\[").replace(/[]]/,"\]");
var regexS = "[\?&]"+name+"=([^&#]*)";
var regex = new RegExp(regexS);
var results = regex.exec(url);
if(results == null)
dfd.resolve("");
else
dfd.resolve(results[1]);
console.log("here1 " + results);
return dfd;
},
任何帮助指针?
没有工作:( – Dhrumil