Аутентификация входа в Steam C#

Я пытаюсь заставить работать вход в Steam для моего сайта с помощью DotNetOpenAuth.

Но просмотр примеров в документации не дает мне никакого представления о том, как заставить это работать.

Вот что я сделал до сих пор:

1) Добавлены справочные файлы dotnetopenauth в \bin и в конфигурацию

2) Добавлено уникальное пользовательское поле в базу данных для ответа, который я получаю от DotNetOpenAuth.

Итак, вот мой вопрос

Как я могу получить идентификатор Steam с помощью DotNetOpenAuth?

Я нашел несколько примеров, сделанных на php: http://forums.steampowered.com/forums/showthread.php?t=1430511


person teddybear    schedule 30.12.2013    source источник


Ответы (1)


Это должно делать это, когда вы включаете правильный DotNetOpenAuth.

Это код, который вы обычно размещаете на своей странице входа в систему, первый if проверяет, есть ли у нас ответ от Steam, и обрабатывает ответ.

Другая часть настраивает запрос и перенаправляет пользователя в Steam — затем steam перенаправит обратно на эту страницу, как только пользователь войдет в систему в Steam.

В отличие от других провайдеров открытой аутентификации, Steam не предоставляет другую информацию о пользователе (электронную почту и т. д.), отправляя запрос претензий вместе с запросом — он предоставляет только URL-адрес в ответе. ClaimedIdentifier, который представляет собой URL-адрес, содержащий идентификатор Steam пользователя. в конце.

Вам нужно будет выполнить манипуляции со строками, чтобы получить идентификатор, только если вы хотите.

protected void Page_Load(object sender, EventArgs e)
{
    var openid = new OpenIdRelyingParty();
    var response = openid.GetResponse();

    if (response != null)
    {
        switch (response.Status)
        {
            case AuthenticationStatus.Authenticated:
                // do success
                var responseURI = response.ClaimedIdentifier.ToString();
                //"http://steamcommunity.com/openid/id/76561197969877387"
                // last part is steam user id
                break;

            case AuthenticationStatus.Canceled:
            case AuthenticationStatus.Failed:
                // do fail
                break;
        }
    }
    else
    {
        using (OpenIdRelyingParty openidd = new OpenIdRelyingParty())
        {
            IAuthenticationRequest request = openidd.CreateRequest("http://steamcommunity.com/openid");
            request.RedirectToProvider();
        }
    }
}
person Ant    schedule 16.01.2014