我正在使用DotNetOpenAuth库为Google和Yahoo创建SSO登录。当用户点击我的LinkButton(我使用自定义登录控件)时,我使用Request.RedirectToProvider()以编程方式重定向到提供程序。
这适用于所有浏览器中的Google和Yahoo。问题是雅虎似乎认为它是在弹出窗口中打开,并调整整个窗口的大小。
如何在DotNetOpenAuth中设置UI类型以防止此行为? UIModes似乎只有弹出模式?
编辑:我实际上没有使用过UIRequest扩展。这是我调试工作的一部分。
请求代码如下:
Dim OpenIDEndpoint As String = WellKnownProviders.Yahoo.ToString, OpenID As OpenIdRelyingParty = New OpenIdRelyingParty
Dim LoginRequest As IAuthenticationRequest = OpenID.CreateRequest(OpenIDEndpoint)
Dim Fields As ClaimsRequest = New ClaimsRequest()
Fields.Email = DemandLevel.Require
Fields.FullName = DemandLevel.Require
Fields.Nickname = DemandLevel.Require
Fields.BirthDate = DemandLevel.Require
Fields.Gender = DemandLevel.Require
LoginRequest.AddExtension(Fields)
LoginRequest.RedirectToProvider()
答案 0 :(得分:0)
UI扩展程序严格用于弹出窗口。如果您没有在弹出窗口中打开提供商的登录页面,请不要附加UIRequest
扩展名。
我希望这能解决调整大小问题。
答案 1 :(得分:0)
感觉这在答案中比在评论中更好地呈现:
即使StackOverflow的Yahoo登录页面也有同样的问题!
在检查SSO的雅虎登录链接时,我注意到雅虎的SSO登录页面似乎针对弹出登录进行了优化。在页面上,有这个JS:
<script type="text/javascript">
var isPopup = "true"; //<-- Note this
if (window.opener || isPopup) {
var Dom = YAHOO.util.Dom;
var Event = YAHOO.util.Event;
(function() {
if (Dom.getViewportWidth() < 500 || Dom.getViewportHeight() < 675) {
window.resizeTo(500,675);
}
})();
...
即使SSO不使用弹出窗口,雅虎似乎也将isPopup值设置为true。我不知道这是雅虎的错误,还是DotNetOpenAuth中的一些错误/错误。我会欢迎安德鲁对此的看法吗?
<强>更新强>:
很奇怪,SSO吃了我的更新。
http://developer.yahoo.com/oauth/guide/oauth-userauth.html - 雅虎显然已经针对弹出窗口优化了他们的SSO登录页面。窗口大小调整可能是由此造成的。