使用请求访问需要Oauth2 google身份验证的第三方API

时间:2018-01-24 14:04:41

标签: python python-requests

出于测试自动化的目的,我想使用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和秘密吗? 还是有其他解决方案吗?

0 个答案:

没有答案