📜  错误 401 未经授权的“未提供身份验证凭据.” - Python (1)

📅  最后修改于: 2023-12-03 14:58:14.569000             🧑  作者: Mango

错误 401 未经授权的“未提供身份验证凭据。” - Python

在 Python 编程中,当我们向服务器发起请求但未提供正确的身份验证凭据时,服务器会返回一个 401 错误,表示未经授权。错误信息通常为“未提供身份验证凭据”。

这个错误通常发生在需要用户进行身份验证的 API 或网站上,以确保只有经过授权的用户才能访问敏感数据或执行特定操作。

为了解决这个问题,我们需要提供有效的身份验证凭据,这可以通过多种方法进行。以下是一些常见的方法:

1. 基本身份验证

基本身份验证是最简单和最常见的身份验证方法。它使用用户名和密码的组合进行身份验证,并将其编码为 Base64 字符串,添加到请求的"Authorization"头中。

import requests
import base64

username = "your_username"
password = "your_password"

url = "https://api.example.com"
headers = {
    "Authorization": "Basic " + base64.b64encode(f"{username}:{password}".encode("utf-8")).decode("utf-8")
}

response = requests.get(url, headers=headers)

请将 your_usernameyour_password 替换为有效的用户名和密码,将 https://api.example.com 替换为相应的 API 端点。

2. OAuth 2.0

如果 API 使用 OAuth 2.0 进行身份验证,我们需要使用相应的库来进行授权和访问令牌的管理。

import requests
from requests_oauthlib import OAuth2Session

client_id = "your_client_id"
client_secret = "your_client_secret"
redirect_uri = "your_redirect_uri"

# 获取授权码
authorization_base_url = "https://api.example.com/oauth/authorize"
oauth = OAuth2Session(client_id, redirect_uri=redirect_uri)
authorization_url, state = oauth.authorization_url(authorization_base_url)

print("请访问以下链接并授权应用访问权限:")
print(authorization_url)

# 获取令牌
token_url = "https://api.example.com/oauth/token"
authorization_response = input("请输入从授权链接获取到的重定向 URL:")

token = oauth.fetch_token(
    token_url,
    authorization_response=authorization_response,
    client_secret=client_secret
)

# 使用访问令牌访问受保护的资源
url = "https://api.example.com/protected_resource"
headers = {
    "Authorization": f"Bearer {token['access_token']}"
}

response = requests.get(url, headers=headers)

请将 your_client_idyour_client_secretyour_redirect_uri 替换为您的应用程序的实际值,并将 https://api.example.com 替换为相应的 API 端点。

3. 其他身份验证方法

除了基本身份验证和 OAuth 2.0,还有其他各种身份验证方法,如 JWT(JSON Web Tokens)、API 密钥、HMAC 签名等。根据目标 API 的特定要求,您可能需要使用适当的库、算法和参数来处理身份验证。

请参考目标 API 的身份验证文档,以了解更多关于所需凭据和身份验证方式的详细信息。

无论哪种身份验证方法,确保在使用 API 或网站之前提供正确的凭据,以避免返回 401 未经授权的错误。

希望这个介绍对您理解错误 401 未经授权的“未提供身份验证凭据。”并解决身份验证问题有所帮助!