关于在不使用任何第三方库的情况下在 Web 中登录 Twitter 的指南

Guide about twitter login in web without using any third party library

我找到了一种使用 github twitter4j 实现 Twitter 登录的方法,但我想在不使用任何第三方库的情况下实现它。有了 twitter 文档,我无法理解我应该为它做什么。我从哪里可以获得 oauth_nonce、oauth_timestamp 和 oauth_signature 的值?请给我一个在 web 中实现 Twitter 登录的好方法。

Please suggest me a good way to implement twitter login in web.

Twitter developer documentation 是这样说的:

"Most developers will not need to work with the details of OAuth, since Twitter Client Libraries already implement the protocol. It is strongly recommended to use one of these libraries. "

如果您选择忽略该建议,则同一页面会链接到其他页面,这些页面解释了 OAuth,解释了获取令牌的各种方式,并解释了如何将身份验证详细信息添加到您的请求中。

我自己是第三方库的开发者,我肯定会建议使用它们。 Twitter 身份验证有多个问题需要考虑。

无论如何,这里有一个答案。

// oauth_nonce
var oauth_nonce = new Random().Next(123400, 9999999).ToString(CultureInfo.InvariantCulture);

// oauth_timestamp
TimeSpan ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);
var oauthTimestamp = Convert.ToInt64(ts.TotalSeconds).ToString(CultureInfo.InvariantCulture);

签名有点复杂。您需要提取查询的所有参数。按名称排序,将它们全部附加到一个用“&”分隔的字符串中(我们称之为 URL_PARAMETERS)。 然后创建一个字符串如下 {HTTP_METHOD}&{BASE_URL}&{URL_PARAMETERS}

现在您只需使用 oauth_secret_key(来自 Twitter 应用程序)计算先前值的哈希。

而且你不能简单地做到 oauth_signature = Http.UrlEncode(Convert.ToBase64(<HASH>))

也别忘了

var oauth_signature_method = "HMAC-SHA1";