# 身份验证

`huggingface_hub` 库允许用户以编程方式管理对 Hub 的认证。这包括登录、登出、在令牌之间切换以及列出可用令牌。

有关身份验证的更多详细信息，请参阅[此部分](../quick-start#authentication)。

## 登录[[huggingface_hub.login]]

#### huggingface_hub.login[[huggingface_hub.login]]

```python
huggingface_hub.login(token: str | None = None, add_to_git_credential: bool = False, skip_if_logged_in: bool = True)
```

[源代码](https://github.com/huggingface/huggingface_hub/blob/main/src/huggingface_hub/_login.py#L57)

**参数：**

token (`str`, *可选*) : 用于从 https://huggingface.co/settings/token 生成的用户访问令牌。

add_to_git_credential (`bool`，默认为 `False`) : 如果 `True`，该 token 将被设置为 git 凭据。如果未配置 git 凭据助手，将向用户显示警告。仅在提供 `token` 时使用；基于浏览器的流程会忽略此参数。

skip_if_logged_in (`bool`，默认为 `True`)：如果为 `True`，当用户已登录时，不再提示输入令牌。将其设置为 `False` 可强制重新登录。在 CLI 中，请改用 `--force`。

**引发：** ``ValueError`` 或 `DeviceCodeError`

- [`ValueError`](https://docs.python.org/3/library/exceptions.html#ValueError) -- 如果传递了组织令牌。只有个人账户令牌才能用于登录。
- [`ValueError`](https://docs.python.org/3/library/exceptions.html#ValueError) -- 如果 token 无效。
- `DeviceCodeError` -- 如果基于浏览器的登录失败（授权被拒绝、代码已过期等）。

登录机器以访问 Hub。

`token` 会被持久化到缓存中，并设置为 git 凭据。完成后，该机器即处于登录状态，访问令牌将在所有 `huggingface_hub` 组件中可用。如果未提供 `token`，则会使用基于浏览器的 OAuth 流程进行身份验证：打开一个 URL，输入一个短代码，然后令牌将被获取并保存。在终端中，你也可以选择粘贴一个现有的访问令牌。

要在脚本之外登录，也可以使用 `hf auth login`，这是一个封装了 [login()](/docs/huggingface_hub/main/zh/package_reference/authentication#huggingface_hub.login) 的命令行命令。

> [!TIP]
> 当未传入 token 时，[login()](/docs/huggingface_hub/main/zh/package_reference/authentication#huggingface_hub.login) 会自动检测脚本是否在 notebook 中运行。然而，由于当前 notebook 种类繁多，这种检测可能并不准确。在这种情况下，您可以始终通过使用 [notebook_login()](/docs/huggingface_hub/main/zh/package_reference/authentication#huggingface_hub.notebook_login) 或 [interpreter_login()](/docs/huggingface_hub/main/zh/package_reference/authentication#huggingface_hub.interpreter_login) 来强制指定 UI。

## interpreter_login[[huggingface_hub.interpreter_login]]

#### huggingface_hub.interpreter_login[[huggingface_hub.interpreter_login]]

```python
huggingface_hub.interpreter_login(skip_if_logged_in: bool = True)
```

[源代码](https://github.com/huggingface/huggingface_hub/blob/main/src/huggingface_hub/_login.py#L284)

**参数：**

skip_if_logged_in (`bool`，默认为 `True`)：如果为 `True`，当用户已登录时，不再提示输入令牌。将其设置为 `False` 可强制重新登录。在 CLI 中，请改用 `--force`。

显示提示，要求登录 HF 网站并存储令牌。

在未于 notebook 中运行时，这等同于不传递 token 的 [login()](/docs/huggingface_hub/main/zh/package_reference/authentication#huggingface_hub.login)。如果您希望强制使用终端提示符而非 notebook 流程，[interpreter_login()](/docs/huggingface_hub/main/zh/package_reference/authentication#huggingface_hub.interpreter_login) 会很有用。

有关更多详细信息，请参阅 [login()](/docs/huggingface_hub/main/zh/package_reference/authentication#huggingface_hub.login)。

## notebook_login[[huggingface_hub.notebook_login]]

#### huggingface_hub.notebook_login[[huggingface_hub.notebook_login]]

```python
huggingface_hub.notebook_login(skip_if_logged_in: bool = True)
```

[源代码](https://github.com/huggingface/huggingface_hub/blob/main/src/huggingface_hub/_login.py#L335)

**参数：**

skip_if_logged_in (`bool`，默认为 `True`)：如果为 `True`，当用户已登录时，不再提示输入令牌。将其设置为 `False` 可强制重新登录。在 CLI 中，请改用 `--force`。

显示提示，要求登录 HF 网站并存储令牌。

在 notebook 中运行时，这相当于不传递 token 的 [login()](/docs/huggingface_hub/main/zh/package_reference/authentication#huggingface_hub.login)。如果您希望强制使用 notebook 流程而不是终端中的提示，[notebook_login()](/docs/huggingface_hub/main/zh/package_reference/authentication#huggingface_hub.notebook_login) 会很有用。

有关更多详细信息，请参阅 [login()](/docs/huggingface_hub/main/zh/package_reference/authentication#huggingface_hub.login)。

## 退出登录[[huggingface_hub.logout]]

#### huggingface_hub.logout[[huggingface_hub.logout]]

```python
huggingface_hub.logout(token_name: str | None = None)
```

[源代码](https://github.com/huggingface/huggingface_hub/blob/main/src/huggingface_hub/_login.py#L120)

**参数：**

token_name (`str`, *可选*) : 要登出的访问令牌名称。如果为 `None`，则从所有已保存的访问令牌中登出。

**引发：** ``ValueError``

- [`ValueError`](https://docs.python.org/3/library/exceptions.html#ValueError) -- 如果未找到访问令牌名称。

将机器从 Hub 注销。

Token 已从机器上删除，并从 git credential 中移除。

## auth_switch[[huggingface_hub.auth_switch]]

#### huggingface_hub.auth_switch[[huggingface_hub.auth_switch]]

```python
huggingface_hub.auth_switch(token_name: str, add_to_git_credential: bool = False)
```

[源代码](https://github.com/huggingface/huggingface_hub/blob/main/src/huggingface_hub/_login.py#L162)

**参数：**

token_name (`str`) : 要切换到的访问令牌名称。

add_to_git_credential (`bool`，默认为 `False`) : 如果 `True`，该 token 将被设置为 git 凭据。如果未配置 git 凭据助手，将向用户显示警告。如果 `token` 为 `None`，则忽略 `add_to_git_credential` 的值，并会再次提示最终用户。

**引发：** ``ValueError``

- [`ValueError`](https://docs.python.org/3/library/exceptions.html#ValueError) -- 如果未找到访问令牌名称。

切换到不同的访问令牌。

## auth_list[[huggingface_hub.auth_list]]

#### huggingface_hub.auth_list[[huggingface_hub.auth_list]]

```python
huggingface_hub.auth_list()
```

[源代码](https://github.com/huggingface/huggingface_hub/blob/main/src/huggingface_hub/_login.py#L191)

列出所有已存储的访问令牌。

