Переменная SteamAuth из startup.auth в представление ASP.NET

Я хочу получить информацию о профиле из Steam. поэтому сначала я исправил, что могу войти через Steam, я использовал этот учебник: http://www.oauthforaspnet.com/providers/steam/

Но теперь я хочу получить идентификатор профиля Steam от пользователя, который вошел в систему, чтобы я мог использовать JSON из API Steam для получения информации от пользователя.

https://steamcommunity.com/profiles/(этот идентификатор)

Я надеюсь, что кто-то может мне помочь, я искал уже несколько часов и не получил никакого результата.

var options = new SteamAuthenticationOptions {
ApplicationKey = "Your API Key",
Provider = new OpenIDAuthenticationProvider // Steam is based on OpenID
{
    OnAuthenticated = async context =>
    {
        // Retrieve the user's identity with info like username and steam id in Claims property
        var identity = context.Identity;
    }
}}; app.UseSteamAuthentication(options);

person Draity    schedule 02.11.2015    source источник


Ответы (1)


Некоторое время назад мы нашли ответ:

1.) вставьте свой ключ из туториала сюда:

var options = new SteamAuthenticationOptions
{
    ApplicationKey = "Your API Key",
    Provider = new OpenIDAuthenticationProvider // Steam is based on OpenID
    {
        OnAuthenticated = async context =>
        {
            // Retrieve the user's identity with info like username and steam id in Claims property
            var identity = context.Identity;
        }
    }
};
app.UseSteamAuthentication(options);

2.) Мы обнаружили, что steam сохраняет идентификатор steam пользователя в таблице базы данных под названием: «AspNetUserLogins», ключ провайдера внутри этой таблицы представляет собой URL-адрес, состоящий из нескольких частей. Например:

http://steamcommunity.com/openid/id/here-users-steamid

Нам нужен только SteamID пользователя, поэтому мы разделим его на шаге 3.

3.) Сделать контроллер, например: SteamController. Здесь мы собираемся добавить общедоступную строку:

public string GetSteamID()
    {
        var manager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new Steam.Models.ApplicationDbContext()));
        var CurrentUser = manager.FindById(User.Identity.GetUserId());
        if (User.Identity.Name != "")
        {
            string url = CurrentUser.Logins.First().ProviderKey;
            ViewBag.steamid = url.Split('/')[5]; //here we going to split the providerkey so we get the right part
        }
        else
        {
            ViewBag.steamid = "";
        }

        return ViewBag.steamid;
    }
  1. ) теперь мы можем добавить кое-что, скажем, мы собираемся добавить информацию о профиле. Перейдите в свой SteamController и добавьте:

        [HttpGet]
    public ContentResult GetProfile()
    {
        string url = string.Format("http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=addyourkeyhere&steamids={0}", this.GetSteamID());
        string result = null;
    
        using (var client = new WebClient())
        {
            result = client.DownloadString(url);
        }
        return Content(result, "application/json");
    }
    

обратите внимание, что вы должны добавить свой ключ Steam из шага 1 в URL-адрес.

  1. ) создайте скрипт с именем: profile.js. Здесь мы собираемся добавить информацию о нашем профиле.

function profilepic() {
    $.ajax({
        url: 'http://localhost:3365/steam/GetProfile',
        dataType: 'json',
        success: function (data) {
            $.each(data.response.players, function (key, value) {
                if ($('.profile')) {
                    $('.profile').append("<img src='" + value.avatar + "'> <span>" + value.personaname + "</span>")
                }
                if ($('.profile1')) {
                    $('.profile1').append("<img src='" + value.avatarfull + "'>")
                }
                if ($('.username')) {
                    $('.username').append(value.personaname)
                }
                
                console.log(value)
            });
        }, error: function (httpReq, status, exception) {
            console.log(status + " " + exception);
        }
    });
}

6.) Теперь нам нужно сделать последний шаг, создать представление с классами, например:

<div class="userprofile">
    <span class="profile1"></span>
    <div class="userdescription">
        <h2 class="username"></h2>
    </div>
</div>
  1. ) Я надеюсь, что это поможет некоторым людям, если у вас есть дополнительные вопросы, не стесняйтесь спрашивать!
person Draity    schedule 07.01.2016