如何使用oauth2为Python指定Oauth提供程序的参数?

时间:2012-07-19 02:48:37

标签: python oauth-2.0

Documentation for the Python oath2 library提供了一个如何向Twitter进行身份验证的简单示例:

import oauth2 as oauth

# Create your consumer with the proper key/secret.
consumer = oauth.Consumer(key="your-twitter-consumer-key", 
    secret="your-twitter-consumer-secret")

# Request token URL for Twitter.
request_token_url = "http://twitter.com/oauth/request_token"

# Create our client.
client = oauth.Client(consumer)

# The OAuth Client request works just like httplib2 for the most part.
resp, content = client.request(request_token_url, "GET")
print resp
print content

但是,如何指定额外参数?例如,Facebook要求“范围”参数来请求诸如电子邮件地址之类的数据。此外,是否有使用除Twitter之外的其他提供商的示例,如Facebook或Google OAuth2?

2 个答案:

答案 0 :(得分:1)

通过查看oath2 lib的代码,client.request()可以添加其他参数:

def request(self, uri, method="GET", body='', headers=None, 
        redirections=httplib2.DEFAULT_MAX_REDIRECTS, connection_type=None):

        ...

        if is_form_encoded and body:
            parameters = parse_qs(body)
        else:
            parameters = None

似乎body参数将被解析为参数。我从fb开发站点复制以下fb oauth请求示例。我认为在?之后添加包含scope参数的部分作为body参数应该正常工作。

https://www.facebook.com/dialog/oauth?
    client_id=YOUR_APP_ID
   &redirect_uri=YOUR_REDIRECT_URI
   &scope=COMMA_SEPARATED_LIST_OF_PERMISSION_NAMES
   &state=SOME_ARBITRARY_BUT_UNIQUE_STRING

答案 1 :(得分:0)

参数可以是元组列表,例如:

[("language","pt")]