Skip to main content

OpenID 2.0 sign in for Steam

Project description

pySteamSignIn

A small Python 3 class designed to get Steam OpenID 2 sign-in up and running as quick as possible.

As of this moment in time there's not really any 'decent' Steam Openid libraries that give any proper documentation or insight in terms of how to actually use them. Alongside this they're often fairly bloated and problematic. As a result of this pySteamSignIn is a lite class designed to let you plug in Steam Auth as quick as possible and let you start returning results immediately.

Installation

pySteamSignIn is now available on pip!

pip install steamsignin

Lets quickly get authentication rolling

The power behind this is it provides the entire auth process over two (or three, if you're using bottlepy / Flask) functions. The first function is ConstructURL, which takes a string and returns a string

The string to pass is whatever page the user is going to be sent back to as a result of logging in with Steam.

from pysteamsignin.steamsignin import SteamSignIn

steamLogin = SteamSignIn()
encodedData = steamLogin.ConstructURL('https://0.0.0.0:8080/processlogin'))
ForwardClientToSteamPage(encodedData) #Not a real function, but the next action you'd take
...

At this point you forward the client on with a post request to https://steamcommunity.com/openid/login and you'll get thrown a bunch of stuff back.

The important thing here is that you get thet GET returned data put into a dictionary to then pass on to ValidateResults

#Some function where the data has been passed in a dictionary no less
steamLogin = SteamSignIn()
returnedSteamID = steamLogin.ValidateResults(dictionaryGoesHere)
#Perform checks to see if you actually have something that isn't false
...

And that's the general gist of it! At this point the user has been validated by Steam's own servers so the Steam64ID returned is one that can be trusted and you can use it to store information, you can set cookies on the current client and so on.

If you use Bottlepy or Flask...

An additional helper function has been provided under the guise of RedirectUser. This will just relay the user on your behalf to the Steam site, as such

steamLogin = SteamSignIn()
steamLogin.RedirectUser(steamLogin.ConstructURL('https://0.0.0.0:8080/processlogin'))
# In the case of Flask, return the above RedirectUser call instead.
...

Finally

Hopefully this helps someone out in terms of getting Steam OpenID and Python working in harmony. There's a few solutions for Flask and Django (which are basically glorified wrappers for python-openid) but both of them can still result in a fair few steps.

This is based on OpenID 2.0 and not OpenID Connect 1.0.

If you require a Go version of this library, this is available here.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

steamsignin-1.0.1.tar.gz (11.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

steamsignin-1.0.1-py3-none-any.whl (11.8 kB view details)

Uploaded Python 3

File details

Details for the file steamsignin-1.0.1.tar.gz.

File metadata

  • Download URL: steamsignin-1.0.1.tar.gz
  • Upload date:
  • Size: 11.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.0 CPython/3.10.2

File hashes

Hashes for steamsignin-1.0.1.tar.gz
Algorithm Hash digest
SHA256 0f2a6aeec38f7f8946849dd851acf5bdc7efed5c8ef00a1ce05d220f4003ca1d
MD5 809b6639fb45fa3409f1c447b16d3efd
BLAKE2b-256 d696b039fead344c09fc6cf3f5830f430f33ff0285c20daf0179755c2497d125

See more details on using hashes here.

File details

Details for the file steamsignin-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: steamsignin-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 11.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.0 CPython/3.10.2

File hashes

Hashes for steamsignin-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 73d3eecfea7de8add455eb9d89cc342df63d6c15e26fd605578e91869caaf1a8
MD5 44eb03304bb1c42e713ba5fa9b7e6422
BLAKE2b-256 ae37dcb12f6b9d996c3b4c04221d3e62c880727d6437481ba419bd8a0afecf05

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page