Meetup Quickstart — Flask Dance 1.1.0 documentation

# Meetup Quickstart

## Set up the application

Visit the Meetup OAuth Consumer page at https://secure.meetup.com/meetup_api/oauth_consumers/ and create a new consumer. Put in `http://localhost:5000/login/meetup/authorized` for the redirect URI. Agree to the terms of service, and register your consumer to get an OAuth key and secret.

## Code

    from flask import Flask, redirect, url_for
    from flask_dance.contrib.meetup import make_meetup_blueprint, meetup

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

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

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

Note

You must replace `my-key-here` and `my-secret-here` with the client ID and client secret that you got from your Meetup application.

Note

If you are running this code on Heroku, you’ll need to use the `werkzeug.contrib.fixers.ProxyFix` middleware. See Proxies and HTTPS.

If you run this code locally or without HTTPS enabled (see warning below), you must set the `OAUTHLIB_INSECURE_TRANSPORT` environment variable to to disable the HTTPS requirement imposed by `oauthlib`, which is part of Flask-Dance. For example, if you put this code in a file named `meetup.py` on your machine, you could run:

    $ export OAUTHLIB_RELAX_TOKEN_SCOPE=1
    $ python meetup.py

Visit http://localhost:5000 in your browser, and you should start the OAuth dance immediately.

Warning

`OAUTHLIB_INSECURE_TRANSPORT` should only be used for local testing or over trusted connections. By default, all OAuth interactions must occur over secure `https` connections (this is enfored by `oauthlib`). However, setting `OAUTHLIB_INSECURE_TRANSPORT` disables this enforcement and allows OAuth to occur over insecure `http` connections.

## Explanation

This code makes a blueprint that implements the views necessary to be a consumer in the OAuth dance. The blueprint has two views: `/meetup`, which is the view that the user visits to begin the OAuth dance, and `/meetup/authorized`, which is the view that the user is redirected to at the end of the OAuth dance. Because we set the `url_prefix` to be `/login`, the end result is that the views are at `/login/meetup` and `/login/meetup/authorized`. The second view is the “redirect URI” that you must tell Meetup about when you create the app.

The `meetup` variable is a `requests.Session` instance, which will be be preloaded with the user’s access token once the user has gone through the OAuth dance. You can check the `meetup.authorized` boolean to determine if the access token is loaded. Whether the access token is loaded or not, you can use all the normal `requests` methods, like `get()` and `post()`, to make HTTP requests. If you only specify the path component of the URL, the domain will default to `https://api.meetup.com`.

Fork me on GitHub