3

Pythonoath2的文档提供了一个非常简单的示例来说明如何向 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?

4

2 回答 2

1

通过查看oath2lib的代码,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 请求示例。我认为在 之后添加部分?,其中包括范围参数,作为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
于 2012-07-19T03:04:31.960 回答
0

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

[("language","pt")]
于 2013-06-21T19:49:49.970 回答