private void TestApi()
{
try
{
using (var httpClient = new HttpClient())
{
string URI = string.Empty;
string progressAPI = "api/GetNearBeacons";
var baseUrl = @"http://localhost/sample";
var uriBuilder = new UriBuilder(baseUrl)
{
Scheme = Uri.UriSchemeHttp
};
httpClient.BaseAddress = uriBuilder.Uri;
httpClient.DefaultRequestHeaders.Accept.Clear();
httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage response = httpClient.GetAsync(progressAPI).Result;
response.EnsureSuccessStatusCode();
if (response.IsSuccessStatusCode)
{
WriteErrorLog("Api called successfully StatusCode :" + response.StatusCode + Environment.NewLine);
}
else
{
WriteErrorLog("Api Calling Failed StatusCode :" + response.StatusCode + Environment.NewLine);
}
}
}
catch (WebException ex)
{
WriteErrorLog(ex.GetBaseException().ToString());
}
catch (Exception ex)
{
WriteErrorLog(ex.GetBaseException().ToString());
}
}
Почти для каждого языка должна быть Платформа! Можно объединить функциональность в цепочку/перенести этого платформы к statisfy потребности!
В псевдокоде:
if(IsUserValidViaOpenId() || IsUserValidByOwnAuthDB()) ... user auth successful
При использовании Java безопасность Acegi/Spring могла бы быть лучшим способом (безопасность, которая не является инвертируемой - через AOP). Там можно использовать открытый и определить собственный второй блок проверки допустимости для собственного userdb yor!
Что-то вроде этого в Вашей логике обработки формы:
def authenticate(form_info):
url = form_info['url']
if (is_facebook_url(url)):
return perform_facebook_authentication(form_info)
else:
return perform_open_id_authentication(form_info)
Facebook присоединился к основе OpenID, поэтому возможно, они будут реализовывать OpenID скоро (в этом случае, может быть лучше просто использовать OpenID).
Вы хотите RPX. Это абстрагирует целую путаницу OpenID далеко и от Вас и от Ваших посетителей. Это также позволяет им пройти проверку подлинности с Facebook или MySpace в дополнение к поставщикам OpenID.
Это обеспечивает интерфейс входа в систему, очень похожий на то, что Вы видите прямо здесь на Переполнении стека.