У вас есть несколько связанных проблем, требующих больше исследований. Поскольку я голосовал, чтобы закрыть вопрос как слишком широкий, я помечаю этот ответ как Community Wiki. Я действительно хочу помочь, но, как и ценности сообщества, я бы посоветовал вам воспользоваться следующими пунктами и использовать их в качестве средств для дальнейшего исследования поисковых систем. Ваш пост для «просто [необходимости] кода PHP» - это запрос на бесплатную работу, которую мы пытаемся отговорить здесь.
I думаю Я понимаю проблему, но у меня нет опыта использования API Steam, поэтому вам может потребоваться прочитать их документы и адаптировать следующее. Если вы раньше не использовали API или сеансы, наем фрилансера в вашей местности может быть самым быстрым и легким путем для вашего проекта на дороге. Вам может понадобиться только несколько часов своего времени, поэтому это не должно быть дорого.
- Ваш скрипт OpenID должен предоставить вашему приложению один из указанных вами идентификаторов профиля. Когда пользователь сначала создает учетную запись на вашем сайте, вам необходимо зафиксировать этот идентификатор профиля и сохранить его против другой интересующей информации. На этом этапе вы должны запустить процедуру преобразования, чтобы у вас был другой идентификатор профиля, и вы также можете его сохранить.
Когда пользователь входит в систему, вам необходимо создать сеанс. Это, как правило, так же просто, как с помощью session_start()
, а затем сохранить первичный ключ записи пользователя в качестве переменной, таким образом:
$_SESSION['user_id'] = $userId;
идентификатор пользователя будет исходить от вашего входа в экран, где вы получите обратный вызов OpenID, чтобы доказать, что ток пользователь действительно владеет идентификатором профиля Steam, который они вам предоставили. Наличие настройки сеанса означает, что любая последующая страница, просматриваемая пользователем, будет иметь свой идентификатор пользователя, пока они не выйдут из системы. Это означает, что вам не нужно делать вызов OpenID на каждой странице.
- Используя этот идентификатор сеанса, вы можете получить любой из ID профиля, который вам нужен, поскольку они оба находятся в вашей базе данных. Это тривиальная операция базы данных
SELECT
с идентификатором сеанса, которую вы можете читать с $_SESSION['user_id]
.
Ниже приведен пример таблицы в OAuth application I wrote (это с открытым исходным кодом, поэтому вы можете разделить ее, если хотите).Когда пользователь входит в систему, эта запись либо создается (если он не существует) или обновлен (если он существует):
mysql> SELECT * FROM user_auth;
+----+---------+---------------------------+----------+---------------------+
| id | user_id | username | provider | last_login_at |
+----+---------+---------------------------+----------+---------------------+
| 1 | 1 | https://github.com/halfer | github | 2015-01-13 18:05:49 |
+----+---------+---------------------------+----------+---------------------+
1 row in set (0.00 sec)
username
является идентификатором OpenID, то provider
полезно, если вы позволите пользователю выбирать из нескольких систем авторизации (Steam - другой), и, конечно, last_login_at
не требует пояснений.
Я также сообщил в комментариях, что вам, возможно, придется написать этот код. Повторное использование библиотеки - похвальная привычка проникать, но, к сожалению, для каждой случайности нет библиотеки - иногда программист просто должен что-то написать. Мы часто видим запросы на Stack Overflow для «библиотеки/учебника/пошагового руководства для [проекта X]» здесь, и если читатели могут убеждать плакаты, что программирование на самом деле не так, они пройдут очень полезный урок.
Итак, попробуйте вышесказанное по порядку? Не стесняйтесь обращаться за дополнительной помощью, если я неправильно понял какую-то основную часть структуры, но в противном случае, пожалуйста, используйте ключевые слова, которые я упомянул, и всплываю в поисковой системе. Это единственный способ узнать. Удачи!
Нет необходимости [удалять и репонировать] (http://stackoverflow.com/q/28912966/472495) ваш вопрос, тем более что он удаляет историю комментариев. Я спросил, можете ли вы уточнить, где вы застряли - «все это» делает это, я думаю, слишком широким для Stack Overflow. Если вы можете предложить одну _particular_ вещь, на которую вы хотели бы помочь, это было бы наиболее полезно для читателей. – halfer
Как вы читаете идентификатор Steam Steam? Если у вас нет кода для этого, это то, что вам нужно начинать. Я использую [lusitanian/oauth] (https://packagist.org/packages/lusitanian/oauth) в GitHub для настройки приложения в качестве потребителя OpenID, похоже, работает нормально. – halfer
[См. Примеры кода здесь] (https://github.com/halfer/awooga-app/tree/master/src/Core/Auth). К сожалению, для начинающего программиста это не тривиально. Если вы обнаружите, что это немного сложнее, возможно, вы ищете «Steam OpenID PHP» - может быть, есть какой-то код, который вы можете использовать напрямую? – halfer