c# - 推特用户: "Could not authenticate with OAuth"

标签 c# .net twitter twitter-oauth twitterizer

我正在使用 Twitterizer用于将网站内的推文发布到我的推特帐户中的库。它在现场运行良好,在我的本地服务器上运行(通过 twitter 应用程序使用 OAuth 进行身份验证并发布推文)。 但是当我试图在生产服务器上发布推文时,Twitterizer 说:“Result = Unauthorized。ErrorMessage = Could not authenticate with OAuth

我仔细检查了用户 key ,还尝试重置 key 并重试 - 结果相同。

Twitter 应用程序对我的 Twitter 帐户具有读/写访问权限,并且未被阻止。 这个问题是在成功运行了大约一个月后突然出现的,当时推文大约每小时发布一次。

这里有什么问题?

更新 看来,其他人也面临这个问题:https://dev.twitter.com/discussions/305

更新 2 最后,我已经找出导致问题出现的原因。生产服务器上的 Web 应用程序尝试更新具有 140 个字符的状态(由 String.Length 属性测量)。第一个字符是 unicode 字符“LEFT-TO-RIGHT MARK”(U+200E)。因此,此文本未经更改就传递给了 TwitterStatus.Update(..)。我调试了一些 Twitterizer 资源,发现 oauth_signature(=hash) 计算不正确。 oauth_signature 是从实际请求的另一个 url 生成的。我还没有弄清发生此错误的原因和时间,可能会在接下来的几天内写下更多信息。

更新 3 我尝试使用新版本的 Twitterizer (2.3.3) 发布相同的消息并且没有发生错误。问题消失了。

这是我用来发布推文的代码:

OAuthTokens tokens = new OAuthTokens();
tokens.AccessToken = ConfigurationManager.AppSettings["twitterAccessToken"];
tokens.AccessTokenSecret = ConfigurationManager.AppSettings["twitterAccessTokenSecret"];
tokens.ConsumerKey = ConfigurationManager.AppSettings["twitterAutoPosterConsumerKey"];
tokens.ConsumerSecret = ConfigurationManager.AppSettings["twitterAutoPosterConsumerSecret"];

string text = "Some text";

TwitterResponse<TwitterStatus> tweetResponse = TwitterStatus.Update(tokens, text);
if (tweetResponse.Result == RequestResult.Success)
{
    // Tweet posted successfully!
    _log.InfoFormat("Posted a tweet #{0}.", tweetResponse.ResponseObject.Id);
}
else
{
    _log.ErrorFormat("Error occured while posting a tweet. Result = {0}. ErrorMessage = {1}",
        tweetResponse.Result, tweetResponse.ErrorMessage);
}

最佳答案

请检查消息,如果消息中有撇号('),请替换为&#39;

请注意,&#39; 将算作 5 个字符。

我认为撇号会影响发送到 twitter 的请求包,使 twitter 无法正确获取 token ,因此我们会收到错误“Could not authenticate with OAuth”。

关于c# - 推特用户: "Could not authenticate with OAuth",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7055622/

相关文章:

c# - GridView CS1061 错误

c# - 为什么这段代码不会以死锁结束

c# - 为什么 Random() 在 .Net 中以这种方式实现?

c# - 如何在类库项目中首先使用 EF Core Code 创建数据库

iphone - Twitter API : OAuth vs. xAuth

twitter - 如何在 HDFS 中存储推文?

c# - XmlTextWriter - 访问路径被拒绝

c# - 找不到文件异常..但它在那里

.net - 什么是 Azure 和 .NET 服务?与 WCF 服务有关联吗?

ruby-on-rails-3 - 认证失败 : Devise + OmniAuth + Twitter