Spaces:
Sleeping
Sleeping
# OAuth | |
<!-- WARNING: THIS FILE WAS AUTOGENERATED! DO NOT EDIT! --> | |
See the [docs page](https://www.fastht.ml/docs/explains/oauth.html) for | |
an explanation of how to use this. | |
``` python | |
from IPython.display import Markdown | |
``` | |
------------------------------------------------------------------------ | |
<a | |
href="https://github.com/AnswerDotAI/fasthtml/blob/main/fasthtml/oauth.py#L23" | |
target="_blank" style="float:right; font-size:smaller">source</a> | |
### GoogleAppClient | |
> GoogleAppClient (client_id, client_secret, code=None, scope=None, | |
> project_id=None, **kwargs) | |
*A `WebApplicationClient` for Google oauth2* | |
------------------------------------------------------------------------ | |
<a | |
href="https://github.com/AnswerDotAI/fasthtml/blob/main/fasthtml/oauth.py#L42" | |
target="_blank" style="float:right; font-size:smaller">source</a> | |
### GitHubAppClient | |
> GitHubAppClient (client_id, client_secret, code=None, scope=None, | |
> **kwargs) | |
*A `WebApplicationClient` for GitHub oauth2* | |
------------------------------------------------------------------------ | |
<a | |
href="https://github.com/AnswerDotAI/fasthtml/blob/main/fasthtml/oauth.py#L54" | |
target="_blank" style="float:right; font-size:smaller">source</a> | |
### HuggingFaceClient | |
> HuggingFaceClient (client_id, client_secret, code=None, scope=None, | |
> state=None, **kwargs) | |
*A `WebApplicationClient` for HuggingFace oauth2* | |
------------------------------------------------------------------------ | |
<a | |
href="https://github.com/AnswerDotAI/fasthtml/blob/main/fasthtml/oauth.py#L67" | |
target="_blank" style="float:right; font-size:smaller">source</a> | |
### DiscordAppClient | |
> DiscordAppClient (client_id, client_secret, is_user=False, perms=0, | |
> scope=None, **kwargs) | |
*A `WebApplicationClient` for Discord oauth2* | |
------------------------------------------------------------------------ | |
<a | |
href="https://github.com/AnswerDotAI/fasthtml/blob/main/fasthtml/oauth.py#L98" | |
target="_blank" style="float:right; font-size:smaller">source</a> | |
### Auth0AppClient | |
> Auth0AppClient (domain, client_id, client_secret, code=None, scope=None, | |
> redirect_uri='', **kwargs) | |
*A `WebApplicationClient` for Auth0 OAuth2* | |
``` python | |
# cli = GoogleAppClient.from_file('client_secret.json') | |
``` | |
------------------------------------------------------------------------ | |
<a | |
href="https://github.com/AnswerDotAI/fasthtml/blob/main/fasthtml/oauth.py#L117" | |
target="_blank" style="float:right; font-size:smaller">source</a> | |
### WebApplicationClient.login_link | |
> WebApplicationClient.login_link (redirect_uri, scope=None, state=None, | |
> **kwargs) | |
*Get a login link for this client* | |
Generating a login link that sends the user to the OAuth provider is | |
done with `client.login_link()`. | |
It can sometimes be useful to pass state to the OAuth provider, so that | |
when the user returns you can pick up where they left off. This can be | |
done by passing the `state` parameter. | |
``` python | |
from fasthtml.jupyter import * | |
``` | |
``` python | |
redir_path = '/redirect' | |
port = 8000 | |
``` | |
``` python | |
app,rt = fast_app() | |
server = JupyUvi(app, port=port) | |
``` | |
<script> | |
document.body.addEventListener('htmx:configRequest', (event) => { | |
if(event.detail.path.includes('://')) return; | |
htmx.config.selfRequestsOnly=false; | |
event.detail.path = `${location.protocol}//${location.hostname}:8000${event.detail.path}`; | |
}); | |
</script> | |
------------------------------------------------------------------------ | |
<a | |
href="https://github.com/AnswerDotAI/fasthtml/blob/main/fasthtml/oauth.py#L124" | |
target="_blank" style="float:right; font-size:smaller">source</a> | |
### redir_url | |
> redir_url (request, redir_path, scheme=None) | |
*Get the redir url for the host in `request`* | |
``` python | |
@rt | |
def index(request): | |
redir = redir_url(request, redir_path) | |
return A('login', href=cli.login_link(redir), target='_blank') | |
``` | |
------------------------------------------------------------------------ | |
<a | |
href="https://github.com/AnswerDotAI/fasthtml/blob/main/fasthtml/oauth.py#L131" | |
target="_blank" style="float:right; font-size:smaller">source</a> | |
### \_AppClient.parse_response | |
> _AppClient.parse_response (code, redirect_uri) | |
*Get the token from the oauth2 server response* | |
------------------------------------------------------------------------ | |
<a | |
href="https://github.com/AnswerDotAI/fasthtml/blob/main/fasthtml/oauth.py#L141" | |
target="_blank" style="float:right; font-size:smaller">source</a> | |
### \_AppClient.get_info | |
> _AppClient.get_info (token=None) | |
*Get the info for authenticated user* | |
------------------------------------------------------------------------ | |
<a | |
href="https://github.com/AnswerDotAI/fasthtml/blob/main/fasthtml/oauth.py#L149" | |
target="_blank" style="float:right; font-size:smaller">source</a> | |
### \_AppClient.retr_info | |
> _AppClient.retr_info (code, redirect_uri) | |
*Combines `parse_response` and `get_info`* | |
``` python | |
@rt(redir_path) | |
def get(request, code:str): | |
redir = redir_url(request, redir_path) | |
info = cli.retr_info(code, redir) | |
return P(f'Login successful for {info["name"]}!') | |
``` | |
``` python | |
# HTMX() | |
``` | |
``` python | |
server.stop() | |
``` | |
------------------------------------------------------------------------ | |
<a | |
href="https://github.com/AnswerDotAI/fasthtml/blob/main/fasthtml/oauth.py#L156" | |
target="_blank" style="float:right; font-size:smaller">source</a> | |
### \_AppClient.retr_id | |
> _AppClient.retr_id (code, redirect_uri) | |
*Call `retr_info` and then return id/subscriber value* | |
After logging in via the provider, the user will be redirected back to | |
the supplied redirect URL. The request to this URL will contain a `code` | |
parameter, which is used to get an access token and fetch the user’s | |
profile information. See [the explanation | |
here](https://www.fastht.ml/docs/explains/oauth.html) for a worked | |
example. You can either: | |
- Use client.retr_info(code) to get all the profile information, or | |
- Use client.retr_id(code) to get just the user’s ID. | |
After either of these calls, you can also access the access token (used | |
to revoke access, for example) with `client.token["access_token"]`. | |
------------------------------------------------------------------------ | |
<a | |
href="https://github.com/AnswerDotAI/fasthtml/blob/main/fasthtml/oauth.py#L162" | |
target="_blank" style="float:right; font-size:smaller">source</a> | |
### url_match | |
> url_match (url, patterns=('^(localhost|127\\.0\\.0\\.1)(:\\d+)?$',)) | |
------------------------------------------------------------------------ | |
<a | |
href="https://github.com/AnswerDotAI/fasthtml/blob/main/fasthtml/oauth.py#L166" | |
target="_blank" style="float:right; font-size:smaller">source</a> | |
### OAuth | |
> OAuth (app, cli, skip=None, redir_path='/redirect', error_path='/error', | |
> logout_path='/logout', login_path='/login', https=True, | |
> http_patterns=('^(localhost|127\\.0\\.0\\.1)(:\\d+)?$',)) | |
*Initialize self. See help(type(self)) for accurate signature.* | |
### Google helpers | |
------------------------------------------------------------------------ | |
<a | |
href="https://github.com/AnswerDotAI/fasthtml/blob/main/fasthtml/oauth.py#L216" | |
target="_blank" style="float:right; font-size:smaller">source</a> | |
### GoogleAppClient.consent_url | |
> GoogleAppClient.consent_url (proj=None) | |
*Get Google OAuth consent screen URL* | |
------------------------------------------------------------------------ | |
<a | |
href="https://github.com/AnswerDotAI/fasthtml/blob/main/fasthtml/oauth.py#L216" | |
target="_blank" style="float:right; font-size:smaller">source</a> | |
### GoogleAppClient.consent_url | |
> GoogleAppClient.consent_url (proj=None) | |
*Get Google OAuth consent screen URL* | |
------------------------------------------------------------------------ | |
<a | |
href="https://github.com/AnswerDotAI/fasthtml/blob/main/fasthtml/oauth.py#L224" | |
target="_blank" style="float:right; font-size:smaller">source</a> | |
### Credentials.update | |
> Credentials.update () | |
*Refresh the credentials if they are expired, and return them* | |
------------------------------------------------------------------------ | |
<a | |
href="https://github.com/AnswerDotAI/fasthtml/blob/main/fasthtml/oauth.py#L224" | |
target="_blank" style="float:right; font-size:smaller">source</a> | |
### Credentials.update | |
> Credentials.update () | |
*Refresh the credentials if they are expired, and return them* | |
------------------------------------------------------------------------ | |
<a | |
href="https://github.com/AnswerDotAI/fasthtml/blob/main/fasthtml/oauth.py#L231" | |
target="_blank" style="float:right; font-size:smaller">source</a> | |
### Credentials.save | |
> Credentials.save (fname) | |
*Save credentials to `fname`* | |
------------------------------------------------------------------------ | |
<a | |
href="https://github.com/AnswerDotAI/fasthtml/blob/main/fasthtml/oauth.py#L231" | |
target="_blank" style="float:right; font-size:smaller">source</a> | |
### Credentials.save | |
> Credentials.save (fname) | |
*Save credentials to `fname`* | |
------------------------------------------------------------------------ | |
<a | |
href="https://github.com/AnswerDotAI/fasthtml/blob/main/fasthtml/oauth.py#L236" | |
target="_blank" style="float:right; font-size:smaller">source</a> | |
### load_creds | |
> load_creds (fname) | |
*Load credentials from `fname`* | |
------------------------------------------------------------------------ | |
<a | |
href="https://github.com/AnswerDotAI/fasthtml/blob/main/fasthtml/oauth.py#L242" | |
target="_blank" style="float:right; font-size:smaller">source</a> | |
### GoogleAppClient.creds | |
> GoogleAppClient.creds () | |
*Create `Credentials` from the client, refreshing if needed* | |
------------------------------------------------------------------------ | |
<a | |
href="https://github.com/AnswerDotAI/fasthtml/blob/main/fasthtml/oauth.py#L242" | |
target="_blank" style="float:right; font-size:smaller">source</a> | |
### GoogleAppClient.creds | |
> GoogleAppClient.creds () | |
*Create `Credentials` from the client, refreshing if needed* | |