所以我设置了一个twitter应用程序,这样人们就可以在我自己的应用程序中回复tweets。我有一个回调URL,当我不尝试覆盖它时,一切似乎都很好。不过,现在我有一个问题,让回叫的覆盖工作,应用程序运行在多个子域和服务器上,这取决于它所处的开发阶段,我想覆盖对当前url的回调。在
当我覆盖回调,twitter试图将用户发送回该页面时,我会看到一个页面,上面写着“对不起,该页面不存在!”在
网址看起来像这样
下面是我的Python代码,它使用oauth的这个库:https://github.com/simplegeo/python-oauth2
#SETUP TWITTER AUTHORIZATION OBJECT
request_token_url = 'http://twitter.com/oauth/request_token'
access_token_url = 'http://twitter.com/oauth/access_token'
authorize_url = 'http://twitter.com/oauth/authenticate'
consumer = oauth.Consumer(consumer_key, consumer_secret)
client = oauth.Client(consumer)
#get request token
callbackURL = urllib.quote("%s?twitterCallback" % self.request.url)
resp, content = client.request(request_token_url, "POST", body=urllib.urlencode({'oauth_callback':callbackURL}))
if resp['status'] != '200':
raise Exception("Invalid Response %s." %resp['status'])
request_token = dict(urlparse.parse_qsl(content))
tmpldict['callbackURL'] = callbackURL
tmpldict['oauth_token'] = request_token['oauth_token']
tmpldict['twitauthurl'] = "%s?oauth_token=%s" % ( authorize_url, request_token['oauth_token'] )
qargs=urlparse_qs(self.request.url,True,False)
if 'oauth_verifier' in qargs:
oauth_verifier = qargs['oauth_verifier'][0]
else:
oauth_verifier = None
if oauth_verifier:
token = oauth.Token(request_token['oauth_token'], request_token['oauth_token_secret'])
token.set_verifier(oauth_verifier)
client = oauth.Client(consumer,token)
resp, content = client.request(access_token_url, "GET")
access_token = dict(urlparse.parse_qsl(content))
用户当前流量
单击授权URL
点击允许在Twitter上访问
Twitter显示:将您重定向回应用程序
找不到与上面示例类似的URL的页面。在
一些快速的事情。。。在
你的网址是旧的和过时的,功能不如正确的网址。使用SSL和api子域:
我不清楚您是在执行基于头的OAuth还是基于querystring的OAuth。我推荐基于头的OAuth,它可以显著地分离关注点,并在错误发生时更容易发现。在
确保将动态oauth_回调值发送到oauth/request_令牌步骤时,它的百分比编码正确。此外,请确保在上的应用程序记录上有一个基于占位符HTTP的回调dev.twitter.com/apps在
相关问题 更多 >
编程相关推荐