Получение OpenID-данных учетной записи Steam, возвращает null?

#php #oauth #openid

#php #oauth #openid

Вопрос:

Я использую Light-OpenID для PHP для аутентификации и извлечения данных.

Для моего URL-адреса поставщика OpenID я использую http://steamcommunity.com/openid /, как задокументировано здесь

Поставщик OpenID Steam Steam может выступать в качестве поставщика OpenID. Это позволяет вашему приложению проверять подлинность SteamID пользователя, не требуя от него ввода имени пользователя Steam или пароля на вашем сайте (что было бы нарушением условий использования API). Просто загрузите библиотеку OpenID для выбранного вами языка и платформы и используйте http://steamcommunity.com/openid как поставщик услуг. Возвращаемый заявленный идентификатор будет содержать 64-разрядный идентификатор SteamID пользователя. Заявленный формат идентификатора: http://steamcommunity.com/openid/id /

Я указал требуемый массив данных, который я запрашиваю как таковой —

 $openid->required = array(
                        'namePerson',
                        'namePerson/first',
                        'namePerson/last',
                        'namePerson/friendly',
                        'contact/email',
                        'email');
  

Я убедился, что мой код работает, протестировал его с другими поставщиками, такими как Google и Yahoo.

Я пытаюсь войти в систему с помощью Steam, я прошел проверку подлинности, но когда я хочу получить данные о пользователе с помощью $openid->getAttributes(); массива, возвращается пустой.

Я исследовал больше, и, похоже, Steam также передает данные через свой веб-API, используя GetPlayerSummaries. Я полагаю, что я мог бы использовать 64-БИТНЫЙ идентификатор Steam из авторизации учетной записи OpenID для запроса данных, но для этого потребуется ключ API и синтаксический анализ данных на PHP.

Есть ли способ запросить эти данные с помощью OpenID? Или я должен вручную анализировать все через API Steam?

Ответ №1:

Steam может выступать в качестве поставщика OpenID. Это позволяет вашему приложению проверять подлинность SteamID пользователя, не требуя от него ввода имени пользователя или пароля Steam на вашем сайте (что было бы нарушением Условий использования API).

Это отвечает на часть вашего вопроса? Они используют OpenID только для аутентификации — не более того. В ответ на другую часть я должен сказать — да, вы должны получить сервисный ключ из steam и использовать метод GetPlayerSummaries, чтобы получить то, что вы хотите. Синтаксический анализ не будет проблемой, потому что они поддерживают много форматов для возврата (я бы использовал JSON).