Използвам DotNetOpenAuth с персонализиран доставчик за влизане, за да вписвам потребителите в моя сайт. Повечето от кода ми работят, но имам проблем с връщането на изгледа и показването му, така че потребителите да могат да влизат в доставчика. По принцип действието връща резултат от действието, което е страницата за вход на конкретния доставчик обратно към извикващия javascript. Очаквах това, тъй като трябва да върна резултатите от влизането обратно в javascript. По принцип това, което се случва, е, че получавам някаква грешка за разрешаване на достъп, след това три нулеви полета (вижте връщането на повикването) и след това нищо. Трябва ми, за да отида на сайта на доставчика и да вляза.
Пример за данни: url = https://www.google.com/accounts/o8/id , requiresUserName = false, username = test (да приемем, че е въведено в текстовото поле).
По-долу е кодът:
JavaScript:
function ProviderSignOn(url, requiresUserName) {
var username = $("#openUserNameText").val();
if ((requiresUserName == 'True') && (username == '')) {
clickedProviderUrl = url;
$('#openUserNameDiv').show('fast');
}
else {
$('#openUserNameDiv').hide('fast');
$("#openUserNameText").val('');
$.ajax({
type: "POST",
url: "/Account/ProviderSignOn",
data: "provider=" + url + "&username=" + username,
success: function (data) {
alert(data.Error);
alert(data.Message);
alert(data.Identifier);
},
failure: function (data) {
alert(data.Error);
alert(data.Message);
alert(data.Identifier);
}
});
}
}
Действие на контролера:
public ActionResult ProviderSignOn(string provider, string username)
{
string providerUrl = provider.Replace("{username}", username);
bool error = true;
string message = String.Empty;
string identifier = String.Empty;
var response = _openId.GetResponse();
if (response == null)
{
Identifier id;
if (Identifier.TryParse(providerUrl, out id))
{
try
{
return _openId.CreateRequest(providerUrl).RedirectingResponse.AsActionResult();
}
catch (ProtocolException ex)
{
throw ex;
}
}
else
{
error = true;
message = "Invalid";
identifier = String.Empty;
}
}
else
{
switch (response.Status)
{
case AuthenticationStatus.Authenticated:
error = false;
message = "Success";
identifier = response.ClaimedIdentifier;
break;
case AuthenticationStatus.Canceled:
error = true;
message = "Canceled";
identifier = String.Empty;
break;
case AuthenticationStatus.Failed:
error = true;
message = "Failed";
identifier = String.Empty;
break;
}
}
return Json(new { Error = error, Message = message, Identifier = identifier });
}
error
на jQuery$.ajax
. - person Domenic   schedule 01.11.2010error
, а неfailure
: api.jquery.com/jQuery.ajax - person Domenic   schedule 01.11.2010