这是我第一次涉足 OAuth,所以如果我离基地很远,或者走向完全错误的方向,请耐心等待。
我想编写一个脚本来从 basecamp 3 中提取信息,对其进行格式化,然后通过电子邮件发送。我已经用 basecamp 2 做到了这一点,而且效果很好。但是 basecamp 3 不允许简单的身份验证。这只是一个每周通过 cron 运行一次的脚本。
我发现的大多数 OAuth 示例都需要获取授权 url、在浏览器中访问它、授予授权等以获取访问令牌。请告诉我有一种自动化的方式!我不能让这成为一个手动过程。
我用 requests-oauthlib 尝试了后端应用程序流(在这里找到:https ://requests-oauthlib.readthedocs.io/en/latest/oauth2_workflow.html#backend-application-flow )
我几乎没有运气就直接尝试了他们的例子:
from oauthlib.oauth2 import BackendApplicationClient
from requests_oauthlib import OAuth2Session
ktclient_id = r'my-client-id'
ktclient_secret = r'my-client-secret'
ktredirect_uri = r'http://www.company.com/whatever'
client = BackendApplicationClient(client_id=ktclient_id)
oauth = OAuth2Session(client=client)
token = oauth.fetch_token(token_url=r'https://launchpad.37signals.com/authorization/token',
client_id=ktclient_id,
client_secret=ktclient_secret)
Run Code Online (Sandbox Code Playgroud)
这是我得到的错误:
Traceback (most recent call last):
File "./get-token.py", line 20, in <module>
client_secret=ktclient_secret)
File "/home/mwilson/.local/lib/python2.7/site-packages/requests_oauthlib/oauth2_session.py", line 244, in fetch_token
self._client.parse_request_body_response(r.text, scope=self.scope)
File "/home/mwilson/.local/lib/python2.7/site-packages/oauthlib/oauth2/rfc6749/clients/base.py", line 409, in parse_request_body_response …Run Code Online (Sandbox Code Playgroud)