OAuth

处理 OAuth 的基本脚手架

有关如何使用的说明,请参阅文档页面

from IPython.display import Markdown

源代码

GoogleAppClient (Google 应用客户端)

 GoogleAppClient (client_id, client_secret, code=None, scope=None,
                  project_id=None, **kwargs)

一个用于 Google OAuth2 的 WebApplicationClient


源代码

GitHubAppClient (GitHub 应用客户端)

 GitHubAppClient (client_id, client_secret, code=None, scope=None,
                  **kwargs)

一个用于 GitHub OAuth2 的 WebApplicationClient


源代码

HuggingFaceClient (HuggingFace 客户端)

 HuggingFaceClient (client_id, client_secret, code=None, scope=None,
                    state=None, **kwargs)

一个用于 HuggingFace OAuth2 的 WebApplicationClient


源代码

DiscordAppClient (Discord 应用客户端)

 DiscordAppClient (client_id, client_secret, is_user=False, perms=0,
                   scope=None, **kwargs)

一个用于 Discord OAuth2 的 WebApplicationClient


源代码

Auth0AppClient (Auth0 应用客户端)

 Auth0AppClient (domain, client_id, client_secret, code=None, scope=None,
                 redirect_uri='', **kwargs)

一个用于 Auth0 OAuth2 的 WebApplicationClient

# cli = GoogleAppClient.from_file('client_secret.json')

源代码

redir_url (重定向网址)

 redir_url (request, redir_path, scheme=None)

获取 request 中主机的重定向 URL

@rt
def index(request):
    redir = redir_url(request, redir_path)
    return A('login', href=cli.login_link(redir), target='_blank')

源代码

_AppClient.parse_response (_应用客户端.解析响应)

 _AppClient.parse_response (code, redirect_uri)

从 OAuth2 服务器响应中获取令牌(token)


源代码

_AppClient.get_info (_应用客户端.获取信息)

 _AppClient.get_info (token=None)

获取已认证用户的信息


源代码

_AppClient.retr_info (_应用客户端.取回信息)

 _AppClient.retr_info (code, redirect_uri)

结合了 parse_responseget_info

@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"]}!')
# HTMX()
server.stop()

源代码

_AppClient.retr_id (_应用客户端.取回 ID)

 _AppClient.retr_id (code, redirect_uri)

调用 retr_info,然后返回 id/subscriber(订阅者)值

通过提供商登录后,用户将被重定向回提供的重定向 URL。对此 URL 的请求将包含一个 code 参数,用于获取访问令牌并抓取用户的个人资料信息。请参阅这里的说明以获取一个实际示例。您可以选择:

  • 使用 client.retr_info(code) 获取所有个人资料信息,或者
  • 使用 client.retr_id(code) 仅获取用户的 ID。

在调用这两个方法中的任意一个之后,您还可以通过 client.token["access_token"] 访问访问令牌(例如,用于撤销访问权限)。


源代码

url_match (URL 匹配)

 url_match (url, patterns=('^(localhost|127\\.0\\.0\\.1)(:\\d+)?$',))

源代码

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+)?$',))

初始化 self。请参阅 help(type(self)) 以获取准确的签名。

Google 辅助工具


源代码

GoogleAppClient.consent_url (Google 应用客户端.授权同意 URL)

 GoogleAppClient.consent_url (proj=None)

获取 Google OAuth 同意屏幕的 URL


源代码

GoogleAppClient.consent_url (Google 应用客户端.授权同意 URL)

 GoogleAppClient.consent_url (proj=None)

获取 Google OAuth 同意屏幕的 URL


源代码

Credentials.update (凭据.更新)

 Credentials.update ()

如果凭据已过期,则刷新凭据并返回它们


源代码

Credentials.update (凭据.更新)

 Credentials.update ()

如果凭据已过期,则刷新凭据并返回它们


源代码

Credentials.save (凭据.保存)

 Credentials.save (fname)

将凭据保存到 fname


源代码

Credentials.save (凭据.保存)

 Credentials.save (fname)

将凭据保存到 fname


源代码

load_creds (加载凭据)

 load_creds (fname)

fname 加载凭据


源代码

GoogleAppClient.creds (Google 应用客户端.凭据)

 GoogleAppClient.creds ()

根据客户端创建 Credentials,如果需要则刷新


源代码

GoogleAppClient.creds (Google 应用客户端.凭据)

 GoogleAppClient.creds ()

根据客户端创建 Credentials,如果需要则刷新