嗨,我創建了一個網站,我有一個OpenId登錄。 當按下登錄按鈕我打電話,基本上有一個AJAX調用把這稱爲AJAX方法:DotNetOpenAuth和ajax
[WebMethod]
public static LoginResult Login(string url)
{
Identifier id;
LoginResult result = new LoginResult();
if (Identifier.TryParse(url, out id))
{
try
{
//request openid_identifier
FetchRequest fetch = new FetchRequest();
fetch.Attributes.AddRequired(WellKnownAttributes.Contact.Email);
fetch.Attributes.AddRequired(WellKnownAttributes.Name.Alias);
fetch.Attributes.AddRequired(WellKnownAttributes.Name.FullName);
fetch.Attributes.AddRequired(WellKnownAttributes.Name.First);
fetch.Attributes.AddRequired(WellKnownAttributes.Name.Last);
string rootUrl = "http://" + HttpContext.Current.Request.Headers["Host"] + "/";
IAuthenticationRequest request = openid.CreateRequest(url, new Realm(rootUrl), new Uri(rootUrl + "?action=verify"));
request.AddExtension(fetch);
result.RedirectUrl = request.RedirectingResponse.Headers["Location"];
}
catch (ProtocolException ex)
{
result.ErrorMessage = ex.Message;
}
}
else
{
result.ErrorMessage = "Could not parse identifier!";
}
return result;
}
這個偉大工程的JavaScript得到「的redirectUrl」,並重定向到它,在開放ID驗證後供應商做我送回到一些這樣的事
但是,當我打電話openid.GetResponse()並檢查狀態其失敗。 如果我檢查異常其包含以下消息
的openid.return_to參數 (HTTP://本地主機:33386 /動作=驗證& dnoa.userSuppliedIdentifier = HTTPS:%2F%2Fwww.google。 (http:// localhost:33386/default.aspx?action = verify & dnoa.userSuppliedIdentifier = https:%2F%2Fwww.google.com%2Faccounts% 與實際的網址不符 2Fo8%2Fid & openid.ns = http:%2F%2Fspecs.openid.net%2Fauth ........
我在這裏做錯了什麼?
注: 我之所以嘗試指定RETURNURL是我的web位於〜\ WebApi.aspx這不是我想要當我的要求去做的土地.. 我想看看組件, ILSpy但「CreateRequest」方法或多或少爲空。
感謝您的洞察力,它解決了我的問題! – Peter 2012-01-20 23:56:21