-
Notifications
You must be signed in to change notification settings - Fork 18
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
4 changed files
with
75 additions
and
8 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,9 +1,67 @@ | ||
# Dash Google Auth | ||
Basic example of using Google OAuth to authenticate and view a [Dash](https://dash.plot.ly/) app. Uses [flask dance](https://github.com/singingwolfboy/flask-dance) and a modified version of Plotly's own [dash auth](https://github.com/plotly/dash-auth) for authentication. | ||
|
||
Dash Google Auth is a simple library using Google OAuth to authenticate and | ||
view a [Dash](https://dash.plot.ly/) app. | ||
|
||
This Library uses [Flask Dance](https://github.com/singingwolfboy/flask-dance) | ||
and a modified version of Plotly's own [dash auth](https://github.com/plotly/dash-auth) | ||
for authentication. | ||
|
||
## Basic Use | ||
|
||
Authentication can be added to your Dash application using the `GoogleOAuth` | ||
class, i.e. | ||
|
||
```python | ||
from dash import Dash | ||
from flask import Flask | ||
from dash_google_auth import GoogleOAuth | ||
|
||
server = Flask(__name__) | ||
server.config.update({ | ||
'GOOGLE_OAUTH_CLIENT_ID': ..., | ||
'GOOGLE_OAUTH_CLIENT_SECRET': ..., | ||
}) | ||
|
||
app = Dash(__name__, server=server, url_base_pathname='/', auth='auth') | ||
|
||
authorized_emails = [...] | ||
additional_scopes = [...] | ||
auth = GoogleOAuth(app, authorized_emails, additional_scopes) | ||
|
||
# your Dash app here :) | ||
... | ||
``` | ||
|
||
## Example | ||
Steps to try this out yourself: | ||
1. Set up a virtual environment and install the requirements (tested only with Python 2.7) | ||
2. Follow the [Flask Dance Guide](http://flask-dance.readthedocs.io/en/latest/quickstarts/google.html) to create an app on the google admin console | ||
3. Replace the variables for *server.config["GOOGLE_OAUTH_CLIENT_ID"]* and *server.config["GOOGLE_OAUTH_CLIENT_SECRET"]* in [init.py](./app/__init__.py) with values from the Google OAuth 2 client you should have set up in step 1. If you've set these up properly, you can find them at [https://console.developers.google.com/apis/credentials](https://console.developers.google.com/apis/credentials) under the section **OAuth 2.0 client IDs** | ||
4. Replace authorized_emails from [init.py](./app/__init__.py) with whatever google emails you want to grant access to your app. In production, I'd recommend getting these from a database instead. | ||
5. Run `python app.py` and open [localhost](http://localhost:8050/) in a browser window to try it out! If the app loads automatically without prompting a google login, that means you're already authenticated -- try using an incogntio window in this case if you want to see the login experience for a new user. | ||
|
||
1. Install the `dash-google-auth` library using `pip`: | ||
|
||
```bash | ||
$ pip install dash-google-auth | ||
``` | ||
|
||
2. Follow the [Flask Dance Guide](http://flask-dance.readthedocs.io/en/latest/quickstarts/google.html) | ||
to create an app on the google admin console | ||
|
||
3. Make a copy of [app.py](https://github.com/lucaschapin/dash-google-auth/blob/master/app.py) | ||
and set the variables (or set the corresponding environment variables): | ||
```python | ||
server.config["GOOGLE_OAUTH_CLIENT_ID"] = ... | ||
server.config["GOOGLE_OAUTH_CLIENT_SECRET"] = ... | ||
``` | ||
with values from the Google OAuth 2 client you should have set up in step 1. | ||
If you've set these up properly, you can find them at | ||
[APIs & Services > Credentials](https://console.developers.google.com/apis/credentials) | ||
under the section **OAuth 2.0 client IDs**. | ||
4. Replace `authorized_emails` in `app.py` with whatever | ||
Google emails you want to grant access to your app. In production, I'd | ||
recommend getting these from a database instead. | ||
|
||
5. Run `python app.py` and open [localhost](http://localhost:8050/) in a | ||
browser window to try it out! If the app loads automatically without | ||
prompting a Google login, that means you're already authenticated -- try | ||
using an incognito window in this case if you want to see the login | ||
experience for a new user. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -68,4 +68,4 @@ def MyDashApp(): | |
]) | ||
|
||
if __name__ == '__main__': | ||
app.run_server() | ||
app.run_server(host='localhost') |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters