如何在请求中使用从 Twitter OAuth 1.0a 获得的 "user context access token"?

How to use "user context access token" that I get from Twitter OAuth 1.0a in my request?

我已成功(?)实施 Twitter three-legged 身份验证过程以获取用户访问令牌。问题是访问令牌似乎无效......或者我用错了。我已经能够获取应用程序的访问令牌,它可以访问有限的 Twitter API。我通过在 header 上添加 "Authentication: Bearer 'access token'" 来使用它。但是当我对用户上下文访问令牌执行相同的操作并执行相同的请求时,我总是收到错误代码 89 无效或过期的令牌。

我获得的访问令牌具有[几个数字]-[一些字母数字字符]的结构。喜欢12345678-asd98f798asdf79asdfa9sdfs9df7a9sdf7。这看起来与 https://developer.twitter.com/en/docs/basics/authentication/oauth-1-0a/obtaining-user-access-tokens.

步骤 3 中的访问令牌示例类似

我也注意到那里的示例请求是这样的:

POST statuses/update.json
oauth_consumer_key=cChZNFj6T5R0TigYB9yd1w
oauth_token=7588892-kagSNqWge8gB1WwE3plnFsJHAZVfxWD7Vb57p0b4

我认为这两个附加参数将被添加到 body 而不是 header。但是,如果我的请求是 GET 请求怎么办?像请求回家时间线,这绝对需要用户上下文访问令牌?

https://developer.twitter.com/en/docs/tweets/timelines/api-reference/get-statuses-home_timeline

根据此 API 参考,该示例仅给出 GET url,而不是如何提供用户上下文访问令牌。请帮忙。我觉得解决方案很简单(就像 header 上的修复),但我看不到它。

这是我当前的请求:

curl -X GET \
  'https://api.twitter.com/1.1/users/show.json?screen_name=huffpost' \
  -H 'Authorization: Bearer 12345678-as3d12a3d1a3sd1232ads13asd123as1d23as3d32,Bearer 12345678-as3d12a3d1a3sd1232ads13asd123as1d23as3d32' \

这是结果:

{
    "errors": [
        {
            "code": 89,
            "message": "Invalid or expired token."
        }
    ]
}

用户访问令牌需要签署包含参数和 headers 的请求。

https://developer.twitter.com/en/docs/basics/authentication/oauth-1-0a/authorizing-a-request

您可以使用 https://github.com/twitter/joauth 这样的库来生成签名。

对于 Java+OkHttp - 你可以使用这个库 https://github.com/yschimke/okurl/blob/master/src/main/kotlin/com/baulsupp/okurl/services/twitter/joauth/Signature.kt#L33