使用 scribejava 使用 JSON 主体发出 Twitter OAuth1 PUT 请求

问题描述

我正在尝试调用 this twitter v2 端点以使用 OAuth1 和 ScribeJava

隐藏推文

这是我尝试过的

val service = ServiceBuilder(apiKey)
        .apiSecret(apiSecret)
        .build(Twitterapi.instance())

    val url = "https://api.twitter.com/2/tweets/${tweetId}/hidden"

    val oauth1 = OAuth1Accesstoken(token,secret)
    val request = OAuthRequest(Verb.PUT,url)
    request.setPayload("{ \"hidden\": true }")

    service.signRequest(oauth1,request)
    val response = service.execute(request)

当我尝试返回 400 Bad Request 时,正确的方法是什么?

解决方法

您的问题的原因可能与您试图隐藏一条您没有能力这样做的推文有关。请注意推文必须遵守的限制才能隐藏。它在 Twitter developer documentationStep three: Find a Tweet ID to hide 部分中说明:

隐藏回复端点可以代表授权用户隐藏或取消隐藏回复。由于我们在此示例中使用与您的用户配置文件相关的访问令牌,因此您将能够隐藏参与由您发起的对话的用户的回复。同样,如果您使用的访问令牌属于授权您的应用的另一个用户,您将能够管理对该帐户发起的任何对话的回复。

让朋友回复推文(让他们知道您正在测试隐藏回复)或从测试帐户回复您的任何推文。单击该回复,然后复制其 URL 的数字部分。这将是我们将隐藏的推文 ID。