所以我设置了一个Twitter应用程序,以便人们可以回复我自己的应用程序内的推文。我有一个回调网址,当我不尝试覆盖它时,一切似乎都没问题。但是现在我遇到了一个问题,即使用回调覆盖工作,应用程序可以在多个子域和服务器上运行,具体取决于它所处的开发阶段,并且我想覆盖当前URL的回调。
当我覆盖回调并且Twitter尝试将用户发送回该页面时,我会进入一个页面,上面写着“抱歉,该页面不存在!”
,URL看起来像这样
以下是我使用此库为oauth创建的Python代码: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))
用户当前流程
点击授权网址
在Twitter上点击允许访问
Twitter显示:将您重定向回应用程序
无法查找包含上述示例的网页。
答案 0 :(得分:4)
很少有事情......
您的网址已过时且过时,其功能与正确的网址不同。使用SSL和api子域:
我不清楚在查看此代码时,您是在执行基于标头的OAuth还是基于查询字符串的OAuth。我推荐基于标题的OAuth - 它可以极大地区分关注点,并在发生错误时更容易发现错误。
确保将动态oauth_callback值发送到oauth / request_token步骤时,它正确地进行了百分比编码。另外,请确保dev.twitter.com/apps上的应用程序记录中有基于HTTP的占位符回调