【问题标题】:Not able to hit Twitter API through POSTMAN无法通过 POSTMAN 访问 Twitter API
【发布时间】:2021-09-03 20:44:49
【问题描述】:

我试图点击 Twitter API 以从 POSTMAN 检索数据,但我遇到了一个错误。

我在 Twitter 中创建了一个项目,然后创建了一个与该 twitter 项目相关联的应用程序。检索到密钥、秘密和承载令牌。我用 Bearer 令牌点击了以下端点并得到了错误

端点:https://api.twitter.com/2/tweets?ids=1261326399320715264,1278347468690915330

错误:在对 Twitter API v2 端点的请求进行身份验证时,您必须使用来自附加到项目的 Twitter 开发人员应用程序的密钥和令牌。您可以通过开发者门户创建项目。

然后我使用带有消费者密钥、消费者秘密、访问令牌和访问秘密的 OAuth 1.0 对同一端点进行热处理,并收到以下错误

{
    "title": "Unauthorized",
    "type": "about:blank",
    "status": 401,
    "detail": "Unauthorized"
}

我不明白我在那里缺少什么。有人可以帮忙吗?

由 Espoir Murhabazi 编辑:我曾尝试使用带记号的令牌进行身份验证,如 in this example 所示,但没有成功

我尝试使用 tweepy 使用的身份验证方案但也是徒劳的。我看起来好像缺少一些东西。

这是我尝试过的完整示例:

import requests
import os
import sys
from tweepy import OAuthHandler
from dotenv import load_dotenv


load_dotenv()


def get_twitter_auth():
    """Setup Twitter authentication.

    Return: tweepy.OAuthHandler object
    """
    try:
        consumer_key = os.getenv('TWITTER_CONSUMER_KEY')
        consumer_secret = os.getenv('TWITTER_CONSUMER_SECRET')
        access_token = os.getenv('TWITTER_ACCESS_TOKEN')
        access_secret = os.getenv('TWITTER_ACCESS_SECRET')
        assert all([consumer_key, access_secret, access_token, consumer_secret])
    except KeyError:
        sys.stderr.write("TWITTER_*  not found\n")
        sys.exit(1)
    auth = OAuthHandler(consumer_key, consumer_secret)
    auth.set_access_token(access_token, access_secret)
    return auth.apply_auth()


protected_url = "https://ads-api.twitter.com/9/insights/keywords/search?granularity=HOUR&keywords=developers&start_time=2021-07-02T10:00:00Z"
oauth = get_twitter_auth()
response = requests.get(url=protected_url, auth=oauth)

print(response.content, 10 * "**=|")

谢谢

【问题讨论】:

  • 广告 api 也存在同样的问题

标签: twitter postman


【解决方案1】:

在邮递员的“授权”选项卡中添加您的bearer token(从 Twitter 开发者帐户接收)[见附图],然后请求。我能够得到您提到的端点的响应。

【讨论】:

    【解决方案2】:

    转到:

    https://developer.twitter.com/en/portal/projects/new

    创建一个新应用,并复制将生成的不记名令牌

    在邮递员中使用:

    输出:

    【讨论】:

      【解决方案3】:

      首先确保您使用的是 GET 请求,而不是针对此特定请求的其他请求类型(如他们的 docs here with a Postman example 所示。我刚刚尝试使用 POST 并遇到相同的错误,但在 GET 请求上工​​作正常。这是我在没有任何编辑的情况下复制和粘贴问题中的 URL 得到的结果;并使用带有承载令牌的 GET 请求作为我的身份验证:

      {
          "data": [
              {
                  "id": "1261326399320715264",
                  "text": "Tune in to the @MongoDB @Twitch stream featuring our very own @suhemparack to learn about Twitter Developer Labs - starting now! https://twitter.com/MongoDB/status/1261091720801980419"
              },
              {
                  "id": "1278347468690915330",
                  "text": "Good news and bad news: \n\n2020 is half over"
              }
          ]
      }
      

      上述 sn-p 中的 url 已被编辑并替换为完整的 URL,因为 StackOverflow 不接受缩短的 URL。

      要更改请求类型,请执行以下操作:

      1. 打开邮递员
      2. 单击 URL 输入文本框(您在其中输入 URL https://api.twitter.com/2/tweets?ids=1261326399320715264,1278347468690915330)左侧的选择输入(也称为组合框)。应该不难看到。
      3. 在选项中选择 GET。如果这不起作用,那么是时候重置您的密钥了。

      要重置您的密钥(根据 Twitter 称为重新生成),请执行以下操作(如果以上解决了您的问题,您可以跳过整个过程):

      1. 在您的 Twitter 开发者帐户中访问您的项目。
      2. 在项目的主视图中,您应该会看到带有两个图标的应用程序;齿轮和钥匙图标。查找您要编辑的应用,点击旁边的钥匙图标
      3. 在下一页上,您可以重新生成您可能无法访问的任何密钥。如果您选择重新生成 Bearer Token,请在 Bearer Token 文本所在的同一行单击重新生成。
      4. 您现在可以将不记名令牌复制到剪贴板,我建议您将其复制到安全的地方,这样您就不必一直重置。
      5. 复制不记名令牌后,打开邮递员
      6. 使用 GET 请求复制选项卡
      7. 在 URL 文本框下应该有一个写为 Authorisation 的选项卡。点击它。
      8. 在该选项卡下应该有一个带有标签type 的选择输入(组合框),单击它并选择Bearer Token
      9. 右侧将出现一个输入,其左侧带有标签token。转到该输入并粘贴您的 URL,使用与您在问题中使用的完全相同的 URL。
      10. 对于最后一步,按Enter 或转到URL 文本框右侧写有Send 的按钮。如果一切都正确完成,您应该会得到结果。

      【讨论】:

        【解决方案4】:

        不记名令牌是用于 OAuth 2.0 的主要访问令牌类型。 Bearer Token 是一个不透明的字符串,对使用它的客户端没有任何意义。尝试使用 access_token 和 access_token_secret,而不是使用不记名令牌。更多信息请参考this

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-03-27
          • 1970-01-01
          • 1970-01-01
          • 2016-07-19
          • 1970-01-01
          • 1970-01-01
          • 2021-08-05
          • 2017-07-27
          相关资源
          最近更新 更多