【发布时间】:2011-11-20 23:05:48
【问题描述】:
我正在尝试将应用程序与 Yahoo! 集成。需要 oauth 身份验证才能访问受保护数据的 API。
我正在使用 python-oauth2 并按照 Yahoo 的 Oauth Authorization Flow 文档中列出的步骤进行操作。我已经能够完成与 Yahoo 协商访问令牌的所有步骤,但似乎无法使用 token to authenticate。
这是我的代码:
import oauth2 as oauth
def list_users(token):
# token is the access token i save in the DB
oauth_token = oauth.Token(token.token, token.secret)
consumer = oauth.Consumer(key=settings.OATH_CONSUMER_KEY,
secret=settings.OATH_SECRET)
client = oauth.Client(consumer, oauth_token)
resp, content = client.request((LIST_USERS_URL), "GET")
return content
但是,我能得到的只是一条错误消息,上面写着“请提供有效的凭据。OAuth oauth_problem="signature_invalid", realm="yahooapis.com"”
我在这里做错了什么?到目前为止,其他一切都很顺利。
【问题讨论】:
-
在调用
https://api.login.yahoo.com/oauth/v2/request_auth?并最终前往https://api.login.yahoo.com/oauth/v2/get_token获取实际的access_token 之前,您是否运行过https://api.login.yahoo.com/oauth/v2/get_request_token过程?一个常见问题是将 request_token 与 access_token 混淆。 -
是的,我正在获取请求令牌和访问令牌,并使用访问令牌进行身份验证。
-
如果access_token没问题,唯一的小错误是
resp, content = client.request(LIST_USERS_URL), "GET")中缺少“(”。最后要检查的是application scopes,注册时是否正确?