【问题标题】:How to create custom headers with python requests module如何使用 python 请求模块创建自定义标头
【发布时间】:2020-11-22 15:50:35
【问题描述】:

我正在编写一个 python 脚本来执行 OAuth client_credentials 类型授权,并且获取的不记名令牌需要在下一个 URL 请求中作为“Authorization”标头参数传递。

我能够执行获取不记名令牌作为响应我得到一个字符串令牌。现在我需要在下一个请求头中传递这个字符串。下面是代码sn-p

def getOAuthToken():
    ClientAuth = requests.auth.HTTPBasicAuth(ClientId, ClientSecret)
    PostData = {"grant_type": "client_credentials"}
    TokenResponse = requests.post(TokenUrl, auth=ClientAuth, data=PostData)

    if(TokenResponse.ok):
        print("Token Json response is success")
        print(TokenResponse.content)

    else:
        print("Error in json response")

    TokenJson = TokenResponse.json()
    AccessToken = "Bearer "+TokenJson["access_token"]
    print("AccessToken =",AccessToken)

def GetOAuthJsonResponse(Url, Headers):
    JsonResponse = requests.get(Url, headers=Headers)
    print(JsonResponse.status_code)

    if(JsonResponse.ok):
        print("Token Json response is success")

    else:
        print("Error in json response")

#AccessToken is the Bearer token received from authorization server
#Sample AccessToken will be like "Bearer 123475755959"
Headers = {'Authorization': AccessToken} 
GetOAuthJsonResponse(OAuthBaseUrl, Headers)

这样做会得到 401 作为 status_code。 401 表示未经授权的访问。这似乎在将访问令牌添加到标头时做错了。 任何人都可以帮助我吗?

【问题讨论】:

  • 确保您的 AccessToken 如评论所述,格式为“Bearer ”
  • 已验证 AccessToken 的类型为 Bearer 。在我的问题陈述中添加了一个函数定义

标签: python oauth-2.0


【解决方案1】:

授权标头需要类似Bearer <accestoken> 的结果。试试这条线:

Headers = {'Authorization': f"Bearer {AccessToken}"}

这会以正确的格式格式化标题。

【讨论】:

  • 感谢您的快速回复。添加了建议的更改,但仍将 401 视为状态代码。
  • 错误地将访问令牌硬编码为静态值。与上述建议的标题格式一起进行的小修改工作正常。现在正在从经过身份验证的 rest api 获得成功响应。
  • 很高兴我能帮上忙:)
猜你喜欢
  • 2020-10-27
  • 2015-08-04
  • 2019-05-22
  • 2019-02-14
  • 2023-03-21
  • 1970-01-01
  • 1970-01-01
  • 2018-02-24
  • 1970-01-01
相关资源
最近更新 更多