3

我正在尝试让一个网站连接到 LinkedIn,我知道我必须使用 OAuth 令牌来连接它,并且我已经在 LinkedIn 开发人员网站上看到了示例,但是,它们都使用 OAuth2 库和网站我正在使用 rauth 库,它似乎跳过了一些步骤。它已经集成了 Twitter,所以我将包含下面的代码,以防有人不太明白我的意思。

推特.py:

import json

from django.http import HttpResponse
from django.conf import settings
from rauth.service import OAuth1Service

def twitter(request, username):
    twitter = OAuth1Service(
    name='twitter',
    consumer_key=settings.TWITTER_CONSUMER_KEY,
    consumer_secret=settings.TWITTER_CONSUMER_SECRET,
    request_token_url=settings.TWITTER_API_URL + 'oauth/request_token',
    access_token_url=settings.TWITTER_API_URL + 'oauth/access_token',
    authorize_url=settings.TWITTER_API_URL + 'oauth/authorize',
    header_auth=True)

url = '{0}1/statuses/user_timeline.json?include_rts=false' \
    '&exclude_replies=true&count=50&screen_name={1}'.format(
        settings.TWITTER_API_URL, username)

r = twitter.request('GET', url, access_token=settings.TWITTER_USER_KEY,
                    access_token_secret=settings.TWITTER_USER_SECRET)

return HttpResponse(content=json.dumps(r.response.json),
                    status=r.response.status_code,
                    content_type=r.response.headers['content-type'])

由于没有评论,我认为它向url发送时返回用户时间线的请求发出请求,但为什么没有请求令牌创建访问令牌创建?它有TWITTER_USER_KEYand TWITTER_USER_SECRET,但 rauth 文档说你应该调用显式方法来获取令牌。我在这里想念什么?

编辑:我很想只使用 rauth 库,而不是干涉其他库。

4

1 回答 1

3
r = twitter.request('GET', url, access_token=settings.TWITTER_USER_KEY,
                access_token_secret=settings.TWITTER_USER_SECRET)

函数twitter创建一个 OAuth1Service 并返回该对象。上面的代码请求用户时间线,似乎访问令牌和秘密存在于设置对象中。可能是用于获取访问令牌和机密的身份验证例程在其他地方。

一个典型的库使用示例(直接取自 rauth 文档http://packages.python.org/rauth/

service = OAuth1Service(
           name='example',
           consumer_key='123',
           consumer_secret='456',
           request_token_url='http://example.com/request_token',
           access_token_url='http://example.com/access_token',
           authorize_url='http://example.com/authorize')

request_token, request_token_secret = service.get_request_token()
authorize_url = service.get_authorize_url(request_token)

授权 URL 被传递给浏览器,以便它将用户重定向到 oAuth 提供者的网站,他可以授予应用程序的权限,然后重定向到客户端,并且可以发送以下请求以获取访问令牌,使用该请求访问可以获取数据。

response = service.get_access_token(method='GET'
                             request_token=request_token,
                             request_token_secret=request_token_secret)
request_token, request_token_secret = service.get_request_token()

快乐编码:)

于 2012-11-15T16:48:56.947 回答