如何使用带有授权类型“客户端凭据”的请求 OAuthlib?

所以我尝试调用一个仅在文档中提供令牌 url 的 API。为此,我想使用 python requests 包中的 OAuthlib。当我查看他们的文档时,他们给出了这个例子:


# Credentials you get from registering a new application

client_id = '<the id you get from github>'

client_secret = '<the secret you get from github>'


# OAuth endpoints given in the GitHub API documentation

authorization_base_url = 'https://github.com/login/oauth/authorize'

token_url = 'https://github.com/login/oauth/access_token'


from requests_oauthlib import OAuth2Session

github = OAuth2Session(client_id)


# Redirect user to GitHub for authorization

authorization_url, state = github.authorization_url(authorization_base_url)

print ('Please go here and authorize,', authorization_url)


# Get the authorization verifier code from the callback url

redirect_response = input('Paste the full redirect URL here:')


# Fetch the access token

github.fetch_token(token_url, client_secret=client_secret,

        authorization_response=redirect_response)


# Fetch a protected resource, i.e. user profile

r = github.get('https://api.github.com/user')

print (r.content)

但在 API 文档中,该服务仅提供令牌 url。它给出了这个 Http BodyPOST示例:


Method: POST

Host: https://login.bol.com/token

Content-Type: application/x-www-form-urlencoded

Accept: application/json


Body: client_id=oRNWbHFXtAECmhnZmEndcjLIaSKbRMVE&client_secret= MaQHPOnmYkPZNgeRziPnQyyOJYytUbcFBVJBvbMKoDdpPqaZbaOiLUTWzPAkpPsZFZbJHrcoltdgpZolyNcgvvBaKcmkqFjucFzXhDONTsPAtHHyccQlLUZpkOuywMiOycDWcCySFsgpDiyGnCWCZJkNTtVdPxbSUTWVIFQiUxaPDYDXRQAVVTbSVZArAZkaLDLOoOvPzxSdhnkkJWzlQDkqsXNKfAIgAldrmyfROSyCGMCfvzdQdUQEaYZTPEoA&grant_type=client_credentials

或者这个 HTTP 标头POST示例:


Method: POST

Host: https://login.bol.com/token?grant_type=client_credentials

Accept: application/json

Authorization: Basic <credentials>

<credentials>的串联在哪里<client_id>:<client_secret>。


如何通过此 API 使用请求 OAuthlib?因为API 文档没有说明任何授权基础 url。


繁星coding
浏览 106回答 1
1回答

RISEBY

我认为你可以提供<client_id>:<client_secret>这样的:from oauthlib.oauth2 import BackendApplicationClientclient = BackendApplicationClient(client_id=client_id)oauth = OAuth2Session(client=client)token = oauth.fetch_token(token_url='https://provider.com/oauth2/token', client_id=client_id,&nbsp; &nbsp; &nbsp; &nbsp; client_secret=client_secret)看到这个
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python