Я использую DotNetOpenAuth с настраиваемым провайдером входа в систему для входа пользователей на мой сайт. У меня работает большая часть кода, но у меня возникла проблема с возвратом представления и его отображением, чтобы пользователи могли войти в провайдер. По сути, действие возвращает результат действия, который является страницей входа в конкретный провайдер обратно в вызывающий javascript. Я ожидал этого, так как мне нужно вернуть результаты входа в javascript. По сути, происходит следующее: я получаю некоторую ошибку о разрешении доступа, затем три пустых поля (посмотрите в ответе на вызов), а затем ничего. Мне нужно, чтобы перейти на сайт провайдера и авторизоваться.
Пример данных: url = https://www.google.com/accounts/o8/id , requiredUserName = 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