こんにちは、私はOpenIdログインを持っているサイトを作成しました。あなたはログインボタンを押すと は、私は基本的にAJAX呼び出しでこれを呼び出すAjaxのメソッドを呼び出します。DotNetOpenAuth and 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(呼び出したときに行われ、状況を確認していますその失敗。 // localhostを:?33386 /アクション= & dnoa.userSuppliedIdentifier = httpsを確認してください:%2F%2Fwww.googleを私は例外を確認した場合 その次のメッセージ
にopenid.return_toパラメータ (HTTPが含まれています。実際のURLと一致しない (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