Skip to main content

Doing the OAuth dance with style using Flask, requests, and oauthlib

Project description

Flask-Dance Build status Test coverage Latest Version Documentation

Doing the OAuth dance with style using Flask, requests, and oauthlib. Currently, only OAuth consumers are supported, but this project could easily support OAuth providers in the future, as well. The full documentation for this project is hosted on ReadTheDocs, but this README will give you a taste of the features.

Installation

Just the basics:

$ pip install Flask-Dance

Or if you’re planning on using the SQLAlchemy backend:

$ pip install Flask-Dance[sqla]

Quickstart

For a few popular OAuth providers, Flask-Dance provides pre-set configurations. For example, to authenticate with Github, just do the following:

from flask import Flask, redirect, url_for
from flask_dance.contrib.github import make_github_blueprint, github

app = Flask(__name__)
app.secret_key = "supersekrit"
blueprint = make_github_blueprint(
    client_id="my-key-here",
    client_secret="my-secret-here",
)
app.register_blueprint(blueprint, url_prefix="/login")

@app.route("/")
def index():
    if not github.authorized:
        return redirect(url_for("github.login"))
    resp = github.get("/user")
    assert resp.ok
    return "You are @{login} on Github".format(login=resp.json()["login"])

if __name__ == "__main__":
    app.run()

NOTE: For this example to work, you must first register an application on Github to get a client_id and client_secret. The application’s authorization callback URL must be http://localhost:5000/login/github/authorized. You’ll also need to set the OAUTHLIB_INSECURE_TRANSPORT environment variable, so that oauthlib allows you to use HTTP rather than HTTPS.

The github object is a context local, just like flask.request. That means that you can import it in any Python file you want, and use it in the context of an incoming HTTP request. If you’ve split your Flask app up into multiple different files, feel free to import this object in any of your files, and use it just like you would use the requests module.

You can also use Flask-Dance with any OAuth provider you’d like, not just the pre-set configurations. See the documentation for how to use other OAuth providers.

Backends

By default, OAuth access tokens are stored in Flask’s session object. This means that if the user ever clears their browser cookies, they will have to go through the OAuth dance again, which is not good. You’re better off storing access tokens in a database or some other persistent store, and Flask-Dance has support for swapping out the storage backend. For example, if you’re using SQLAlchemy, just set it up like this:

from flask_sqlalchemy import SQLAlchemy
from flask_dance.consumer.backend.sqla import OAuthConsumerMixin, SQLAlchemyBackend

db = SQLAlchemy()

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    # ... other columns as needed

class OAuth(db.Model, OAuthConsumerMixin):
    user_id = db.Column(db.Integer, db.ForeignKey(User.id))
    user = db.relationship(User)

# get_current_user() is a function that returns the current logged in user
blueprint.backend = SQLAlchemyBackend(OAuth, db.session, user=get_current_user)

The SQLAlchemy backend seamlessly integrates with Flask-SQLAlchemy, as well as Flask-Login for user management, and Flask-Cache for caching.

Full Documentation

This README provides just a taste of what Flask-Dance is capable of. To see more, read the documentation on ReadTheDocs <http://flask-dance.readthedocs.org/>.

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

Flask-Dance-0.5.0.tar.gz (986.2 kB view details)

Uploaded Source

Built Distributions

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

Flask_Dance-0.5.0-py2.py3-none-any.whl (24.6 kB view details)

Uploaded Python 2Python 3

Flask_Dance-0.5.0-py2.7.egg (48.3 kB view details)

Uploaded Egg

File details

Details for the file Flask-Dance-0.5.0.tar.gz.

File metadata

  • Download URL: Flask-Dance-0.5.0.tar.gz
  • Upload date:
  • Size: 986.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for Flask-Dance-0.5.0.tar.gz
Algorithm Hash digest
SHA256 0dfeb669e35fd7817b60b243a5c6ccd634a371ce410f6c0593fe3cba15b111af
MD5 e5e8730103a5daed7f05e1c7b05dc0b7
BLAKE2b-256 c28e3968554bedbcf6fe67589f841ed143e2755699d3a52137b874a80d01bbfc

See more details on using hashes here.

File details

Details for the file Flask_Dance-0.5.0-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for Flask_Dance-0.5.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 9cf44f7ff0ba8af4569d90560e6438ce1035d096b0f388054e5aec2156b8829c
MD5 d4d27810785181fa4f0ca4f71e88ffac
BLAKE2b-256 16e483b19aa94e6af5dc5b9b76d5e58cf76b76cefafafcf073f1b461267bb77e

See more details on using hashes here.

File details

Details for the file Flask_Dance-0.5.0-py2.7.egg.

File metadata

File hashes

Hashes for Flask_Dance-0.5.0-py2.7.egg
Algorithm Hash digest
SHA256 6748817e2a268fe63f9795b52e22e0559aca803a2108e70a5349d8317311a28f
MD5 5baa7c27677f51b34906aaac94aea723
BLAKE2b-256 d5a0e610f8527606239801bbd44f90a54f399caf907d6aa4808c4b42edf4e78a

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