出于测试自动化的目的,我想使用requests和requests-oauthlib库来访问API。
API使用oauth2身份验证与Google帐户,但它不是谷歌API。由于我的测试工具应该能够无人值守运行,我希望能够获得一个访问令牌,然后我可以无限期地自动刷新。
看起来像来自requests-auth文档的这个例子会很棒。它涉及一次手动登录,然后我可以刷新令牌 https://requests-oauthlib.readthedocs.io/en/latest/examples/google.html
from requests_oauthlib import OAuth2Session
client_id="xxxx.apps.googleusercontent.com"
client_secret="xxxxx"
redirect_uri = 'https://localhost/callback'
authorization_base_url = "https://accounts.google.com/o/oauth2/auth"
token_url ="https://accounts.google.com/o/oauth2/token"
scope = [
"https://www.googleapis.com/auth/userinfo.email",
"https://www.googleapis.com/auth/userinfo.profile",
]
google = OAuth2Session(client_id, scope=scope, redirect_uri=redirect_uri)
# Redirect user to Google for authorization
authorization_url, state = google.authorization_url(authorization_base_url,
access_type="offline", prompt="select_account")
print 'Please go here and authorize,', authorization_url
redirect_response = raw_input('Paste the full redirect URL here:')
# Fetch the access token
google.fetch_token(token_url, client_secret=client_secret,
authorization_response=redirect_response)
r = google.get('https://www.googleapis.com/oauth2/v1/userinfo')
print r.content
但是,我需要适应我的API,我找不到办法。
我可以设置authorization_base_url =" https://example.net/.auth/login/google" 并获取重定向URL,但之后不起作用。 我不知道我应该设置什么作为范围。
我应该从API提供商处获得Id和秘密吗? 还是有其他解决方案吗?