问题在于:
网站(部分客户以http登录,部分以https登录)= http ://www.example.com
Dropbox重定向需要 https :// www.example.com(Dropbox不允许重定向网址 http )
如果我的网站 https ://www.example.com,那一切都很棒。但对于一些客户来说它是http。我可以使用redirect = https,但在用户通过弹出窗口登录后,它应该会回到我的http页面。
有任何建议怎么做?
这是我的代码:
this._oauthSignIn(url, dropboxRedirect).then(
lang.hitch(this, function (oauthSignInUrl) {
this._getTokenValue(oauthSignInUrl, 'access_token').then(
lang.hitch(this, function (accessToken) {
dfd.resolve(accessToken);
})
);
})
);
_oauthSignIn: function (url, redirect_uri) {
var dfd = new Deferred();
var win = window.open(url, "_blank", 'width=800, height=600');
win.focus();
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;
},
_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]);
return dfd;
},
答案 0 :(得分:0)
让这个工作,所以发布此用例的解决方法。
使用此示例: 客户页面:www.abc.example.com/something.html
Oauth重定向网页= www.example.com/oauthTest.html
隐藏的iframe = www.example.com/iframe.html
在客户页面上创建隐藏的iframe。调用此隐藏的iframe时会启动弹出窗口。 当用户使用dropbox点击登录时,隐藏的iframe会打开oauth弹出窗口。由于隐藏的iframe和oauth弹出窗口在同一个域上,因此工作正常,并且它们可以交叉通信。 在隐藏的iframe上获得令牌后,通过postmessage将其发送到客户页面。 现在,您可以在应用程序中使用令牌。 在iframe周围添加保护,只有您的应用程序可以调用它。