我正在尝试建立一个连接到LinkedIn的网站,我知道我必须使用OAuth令牌连接到它,我已经在LinkedIn开发者网站上看过这些示例,但是,他们都使用了OAuth2库和我正在使用的网站使用rauth库,这似乎跳过了一些步骤。它已经整合了Twitter,所以如果有人不太明白我的意思,我会在下面加上代码。
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
发出请求,该请求在发送时返回用户的时间轴,但是为什么没有请求令牌创建 OR 访问令牌创建?它有TWITTER_USER_KEY
和TWITTER_USER_SECRET
,但是rauth文档说你应该调用显式方法来获取令牌。我在这里缺少什么?
编辑:我非常想使用rauth库,而不是插手其他库。
答案 0 :(得分: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()
快乐编码:)