在python中使用用户名和密码的oauth1.0

时间:2019-03-30 05:41:51

标签: python oauth python-requests oauth-1.0a requests-oauthlib

我正在尝试将qwikcilver API集成到我的项目中。他们正在使用oauth1.0进行身份验证。我正在将requests-oauthlib python lib用于oauth1.0。
这是我的身份验证代码。

# Using OAuth1Session
oauth = OAuth1Session(client_key, client_secret=client_secret)
fetch_response = oauth.fetch_request_token(request_token_url)
{
    "oauth_token": "Z6eEdO8MOmk394WozF5oKyuAv855l4Mlqo7hhlSLik",
    "oauth_token_secret": "Kd75W4OQfb2oJTV0vzGzeXftVAwgMnEK9MumzYcM"
}
resource_owner_key = fetch_response.get('oauth_token')
resource_owner_secret = fetch_response.get('oauth_token_secret')

我的查询如下,
qwikcilver具有用户名和密码。我尝试了很多代码发送用户名和密码,但是没有用。

如何在请求-oauthlib请求函数中传递用户名和密码?

1 个答案:

答案 0 :(得分:0)

与qwikcilver(无论是什么)一起检查是否有提供生成令牌和授权的条件。如果是这样,则可以将令牌用作标头的一部分并调用API。如果那不存在,请检查它们是否允许2足通话。但是,此类服务通常不允许普通用户进行两腿通话。

对于三足通话,您可能需要使用浏览器来完成授权。

在您的代码中,您已经调用了请求令牌,并且您正试图使用​​它来获得对服务的访问权限。这将不起作用。请求令牌只是必须经过授权的临时令牌。请求令牌不能用于此类API调用。不起作用。授权后,您将需要调用访问令牌API来获取您的实际令牌-可用于获取对您被授权的服务的访问权限。

简而言之,这就是过程

1)请求令牌>> 2)授权>> 3)访问令牌

这是流程。 Python中的示例

oauth1Session = OAuth1Session(clientKey, clientSecret)

def requestToken(self):
    requestTokenResponse = oauth1Session.fetch_request_token(oauth1RequestTokenUrl, realm)

    token = requestTokenResponse.get('oauth_token')
    secret = requestTokenResponse.get('oauth_token_secret')

    return (token, secret)

def authorize(self, token):
    authUrl = oauth1Session.authorization_url(oauth1AuthorizeUrl, token)
    print (authUrl)

    #########
    # THIS IS WHERE YOU NEED THE BROWSER. 
    # You visit authUrl and login with your Username and Password. 
    # This will complete Authorization

    return authUrl

def accessToken(self):
    accessTokenResponse = oauth1Session.fetch_access_token(oauth1AccessTokenUrl)

    print (accessTokenResponse) 

    #########
    #accessTokenResponse contains your actual token
    #

对于浏览器部分-您可以尝试使用Python的Chromium绑定(以前很少尝试过铬绑定-例如,这个https://github.com/cztomczak/cefpython)。还有其他选项,例如使用默认安装的浏览器等。选择任何适合您的方法。

一旦有了相应的设置-您可以以编程方式访问URL(authUrl),并获得授权(登录后再输入“ allow”)-您可以使用“”重定向到回调(在OAuth1的情况下指定)代码”查询字符串。这是授权码。

获得授权码后,您可以关闭浏览器窗口并调用“获取访问令牌”调用(fetch_access_token)。

希望这会有所帮助!