Skip to main content

Integrate your dashboards with 3rd party APIs and external OAuth providers.

Project description

dash-auth-external

Integrate your dashboards with 3rd party APIs and external OAuth providers.

Overview

Do you want to build a Plotly Dash app which pulls user data from external APIs such as Google, Spotify, Slack etc?

Dash-auth-external provides a simple interface to authenticate users through OAuth2 code flow. Allowing developers to serve user tailored content.

Installation

Dash-auth-external is distributed via PyPi

pip install dash-auth-external

Usage

#using spotify as an example
AUTH_URL = "https://accounts.spotify.com/authorize"
TOKEN_URL = "https://accounts.spotify.com/api/token"
CLIENT_ID = "YOUR_CLIENT_ID"

# creating the instance of our auth class
auth = DashAuthExternal(AUTH_URL, TOKEN_URL, CLIENT_ID)

We then pass the flask server from this object to dash on init.

app = Dash(__name__, server= auth.server)

That's it! You can now define your layout and callbacks as usual.

To obtain your access token, call the get_token method of your Auth object. NOTE This can ONLY be done in the context of a dash callback.

...

app.layout = html.Div(
[
html.Div(id="example-output"),
dcc.Input(id="example-input")
])

@app.callback(
Output("example-output", "children"),
Input("example-input", "value")
)
def example_callback(value):
    token = auth.get_token()
     ##The token can only be retrieved in the context of a dash callback

    token_data = auth.get_token_data()
    # get_token_data can be used to access other data returned by the OAuth Provider
    print(token)
    print(token_data)

    return token

Results in something like:

>>> fakeToken123
>>> {
    "access_token" : "fakeToken123",
    "user_id" : "lucifer",
    "some_other_key" : 666,
    "expires_at" : "judgmentDay"
}

Refresh Tokens

If your OAuth provider supports refresh tokens, these are automatically checked and handled in the get_token method.

Check if your OAuth provider requires any additional scopes to support refresh tokens

Troubleshooting

If you hit 400 responses (bad request) from either endpoint, there are a number of things that might need configuration.

Make sure you have checked the following

  • Register your redirect URI with OAuth provider!

The library uses a default redirect URI of http://127.0.0.1:8050/redirect.

Contributing

Contributions, issues, and ideas are all more than welcome.

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

dash_auth_external-1.2.1.tar.gz (8.3 kB view details)

Uploaded Source

Built Distribution

dash_auth_external-1.2.1-py3-none-any.whl (10.5 kB view details)

Uploaded Python 3

File details

Details for the file dash_auth_external-1.2.1.tar.gz.

File metadata

  • Download URL: dash_auth_external-1.2.1.tar.gz
  • Upload date:
  • Size: 8.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.9.19

File hashes

Hashes for dash_auth_external-1.2.1.tar.gz
Algorithm Hash digest
SHA256 dd2bbf695e7e91400a96652a9b5aaf587070fff1ccd1b083d605d1fcfc6a2ea0
MD5 8943722dddd2d96c78d514c7b443a6a2
BLAKE2b-256 c5a9800f2632675dc7b3160c60df065cba693a95f2b76ca4f387fd5969fa4c5d

See more details on using hashes here.

File details

Details for the file dash_auth_external-1.2.1-py3-none-any.whl.

File metadata

File hashes

Hashes for dash_auth_external-1.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 4661fa1f4d9c12c2fd91f3a014dbf85f6ed7d3079c96b1c7d15fece033c346fa
MD5 11f38550b4c1b18e427f42753d6f50bb
BLAKE2b-256 02b0bc35c9ccbe95ea68b30482a09103f52d3da19cbf2c52e0d4d21e63bd197e

See more details on using hashes here.

Supported by

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