0

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

4

2 回答 2

2

请建议我在 web 中实现 twitter 登录的好方法。

Twitter 开发者文档是这样说的:

“大多数开发人员不需要使用 OAuth 的细节,因为 Twitter 客户端库已经实现了该协议。强烈建议使用这些库之一。

如果您选择忽略该建议,那么同一页面将包含指向其他页面的链接,这些页面解释了 OAuth、解释获取令牌的各种方法以及解释如何将身份验证详细信息添加到您的请求中。

于 2016-05-23T08:05:47.033 回答
0

我自己是第三方库的开发人员,我肯定会建议使用它们。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";
于 2016-05-23T10:01:01.970 回答