2011-11-20 127 views
0

我正试图将应用程序与Yahoo! api需要oauth认证来访问受保护的数据。在Yahoo!中使用OAuth API请求(Python)

我使用的是python-oauth2,以下列出了雅虎的Oauth Authorization Flow文档中列出的步骤。我已经能够完成所有步骤来与雅虎协商访问令牌,但似乎无法使用token to authenticate

这里是我的代码:“请提供有效凭据的OAuth oauth_problem =”

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 

然而,所有我能得到的回复是一个错误信息,说signature_invalid“境界=” yahooapis。 com“”

我在这里做错了什么?到目前为止,其他一切都很顺利。

+0

在调用https://api.login.yahoo.com/oauth/v2/request_auth?之前,您是否运行了“https:// api.login.yahoo.com/oauth/v2/get_request_token”过程?并最终前往'https:// api.login.yahoo.com/oauth/v2/get_token'获取实际的access_token?一个常见的问题是混淆request_token作为access_token。 –

+0

是的,我得到请求令牌和访问令牌并使用访问令牌进行验证。 – Cory

+0

如果access_token没问题,唯一的小错误就是在'resp,content = client.request(LIST_USERS_URL),“GET”)中缺少一个“(”。最后要检查的是[应用范围](http://developer.yahoo.com/oauth/guide/oauth-scopes.html),注册期间它是否正确? –

回答

0

嗯,我觉得有点羞怯。所以事实证明,当你访问一个无效的API调用时,雅虎也会抛出这个确切的错误。所以在我的情况下,当我必须指定一个子API时,我正在访问一个根API。故事的寓意:请注意,oauth错误可能代表您的应用/代码中的其他问题。