当前位置: 首页 > 知识库问答 >
问题:

如何使用Twython将oauth_回调值传递给oauth/request_令牌

叶谦
2023-03-14

Twitter最近刚刚强制执行以下内容:

1) 您必须将oauth\u回调值传递给oauth/request\u令牌。这不是可选的。即使您已经在dev.twitter上设置了一个。通用域名格式。如果正在执行带外OAuth,请传递OAuth\u callback=oob。

2) 您必须将从已执行回调收到的或最终用户手工键入的oauth\u验证程序传递给oauth/access\u令牌。这是推特帖子(https://dev.twitter.com/discussions/16443)

这导致Twythonget_authorized_tokens抛出此错误:

Request: oauth/access_token

Error: Required oauth_verifier parameter not provided

我有两个问题:

1、如何使用Twython将oauth\u回调值传递给oauth/request\u令牌?

2.如何传递oauth_verifier

我可以通过请求获得oauth\u验证器。从回调url获取['oauth\u verifier',但我不知道从那里使用Twython做什么。我到处都在搜索,但没有找到任何答案,所以我决定发布这个。这是我的第一篇帖子,所以请友好一点;)

这是我的代码:

def register_twitter(request):
    # Instantiate Twython with the first leg of our trip.
    twitter = Twython(
        twitter_token = settings.TWITTER_KEY,
        twitter_secret = settings.TWITTER_SECRET,
        callback_url = request.build_absolute_uri(reverse('account.views.twitter_thanks'))
    )

    # Request an authorization url to send the user to
    auth_props = twitter.get_authentication_tokens()

    # Then send them over there
    request.session['request_token'] = auth_props
    return HttpResponseRedirect(auth_props['auth_url'])


def twitter_thanks(request, redirect_url=settings.LOGIN_REDIRECT_URL):

    # Now that we've got the magic tokens back from Twitter, we need to exchange
    # for permanent ones and store them...
    twitter = Twython(
        twitter_token = settings.TWITTER_KEY,
        twitter_secret = settings.TWITTER_SECRET,
        oauth_token = request.session['request_token']['oauth_token'],
        oauth_token_secret = request.session['request_token']['oauth_token_secret'],
    )

    # Retrieve the tokens
    authorized_tokens = twitter.get_authorized_tokens()

    # Check if twitter user has a UserProfile
    try:
        profile = UserProfile.objects.get(twitter_username=authorized_tokens['screen_name'])
    except ObjectDoesNotExist:
        profile = None

共有1个答案

葛阳华
2023-03-14

我找到了自己的答案。如果可以帮助其他人,以下是解决方案:

在文件Twython中。py,我向Twython类构造函数添加了一个新参数oauth\u验证器。我从我的twitter\u感谢视图中的回调url获取oauth\u验证器值。

在get\u authorized\u tokens中,我删除了这行代码:

response = self.client.get(self.access_token_url)

并添加了以下代码:

callback_url = self.callback_url or 'oob'
request_args = urllib.urlencode({'oauth_callback': callback_url, 'oauth_verifier':self.oauth_verifier })
response = self.client.post(self.access_token_url, params=request_args)

它现在的工作方式很有魅力,符合OAuth 1.0A。

 类似资料:
  • 我是一名自学成才的PHP开发人员,从未有过潜入OAuth的乐趣。我知道基本情况,但我无法让实现正常工作。我已经在互联网上和stackoverflow上搜索过了,虽然他们中的大多数似乎都接近我的问题,但没有一个有效。(或者我只是错过了一些东西) 我收到了消费者令牌、消费者秘密、访问令牌和访问令牌秘密。 据我所知,我应该使用消费者令牌和密码来请求访问令牌和密码,还是我错了? 我收到的带有令牌的手册没有

  • 问题内容: 在我的AngularJS应用程序中,我正在执行以下操作 现在,我需要访问成功回调中的值,即,我需要知道在发出请求时它具有哪个值。 有什么“最佳实践”怎么做? PS:我可以执行以下操作,但是有更好的方法吗? 问题答案: 解决方案1: 解决方案2(根据Jim Hong的回答更新):

  • 问题内容: 我试图将回调函数从控制器传递给指令。 这是回调函数代码: 指令用法: 指令代码: 模板中的回调用法: 但是,这给了我以下错误: 我看过很多类似的问题,但不明白我在哪里错了。 问题答案: 从指令中调用表达式方法时,您需要以格式传递指令中的参数,还应更正指令属性值以像 指令用法: 指令模板

  • 问题内容: 我有一些如下的JavaScript代码: 我收到未定义的错误,在使用该功能之前,一切都在工作。 我希望一段时间后调用我的函数。我该怎么办? 问题答案: setTimeout(function() { postinsql(topicId); }, 4000) 您需要将匿名函数作为参数而不是字符串作为参数,后一种方法甚至不符合ECMAScript规范,但浏览器比较宽松。这是正确的解决方案,

  • 问题内容: 我有2个按钮,分别名为“ ButtonA”,“ ButtonB”。如果要单击任何按钮,我希望程序打印“ hello,ButtonA”和“hello,ButtonB”。我的代码如下: 当我单击ButtonA时,会发生错误。 我理解此错误,但是如何将ButtonA的文本传递给lambda? 问题答案: 这应该工作: 有关更多信息,请查看Tkinter回调

  • 问题内容: 我想将回调传递给加倍嵌套的组件,并且尽管我能够有效地传递属性,但我不知道如何将回调绑定到正确的组件上才能被触发。我的结构如下所示: 单击列表项时应触发一个回调,这是OutermostComponents方法“ onUserInput”,但相反,我得到“未捕获的错误:未定义不是函数”。我怀疑问题出在我如何在第一个内部渲染SecondNestedComponent并将其传递给回调函数。代码