我正在开发一个应用程序,用户可以登录他们的Twitter帐户并发布他们的状态。 一切进展顺利但是当我点击推文按钮发布时,状态不会更新。
我的代码出了什么问题?
private void btnPostTweet_Click(object sender, RoutedEventArgs e)
{
if (txtBoxNewTweet.Text.Trim().Length == 0) { return; }
var credentials = new OAuthCredentials
{
Type = OAuthType.ProtectedResource,
SignatureMethod = OAuthSignatureMethod.HmacSha1,
ParameterHandling = OAuthParameterHandling.HttpAuthorizationHeader,
ConsumerKey = TwitterSettings.consumerKey,
ConsumerSecret = TwitterSettings.consumerKeySecret,
Token = this.accessToken,
TokenSecret = this.accessTokenSecret,
Version = "1.0"
};
var restClient = new RestClient
{
Authority = TwitterSettings.StatusUpdateUrl,
HasElevatedPermissions = true,
Credentials = credentials,
Method = WebMethod.Post
};
restClient.AddHeader("Content-Type", "application/x-www-form-urlencoded");
// Create a Rest Request and fire it
var restRequest = new RestRequest
{
Path = "1/statuses/update.xml?status=" + txtBoxNewTweet.Text
};
var ByteData = Encoding.UTF8.GetBytes(txtBoxNewTweet.Text);
restRequest.AddPostContent(ByteData);
restClient.BeginRequest(restRequest, new RestCallback(PostTweetRequestCallback));
}
答案 0 :(得分:0)
尝试使用此代码而不是代码的最后几行
restRequest = new RestRequest
{
Path = "1/statuses/update.xml"
};
restRequest.AddParameter("status", tbxNewTweet.Text);
//var ByteData = Encoding.UTF8.GetBytes(txtBoxNewTweet.Text);
//restRequest.AddPostContent(ByteData);
restClient.BeginRequest(restRequest, new RestCallback(PostTweetRequestCallback));
答案 1 :(得分:0)
我无法回答您的问题,但如果您使用API twitter api 1.0,请立即转到api 1.1。他们将在下个月退休api 1.0:https://dev.twitter.com/blog/planning-for-api-v1-retirement。 请注意,他们正在关闭除JSON之外的所有内容,因此您的代码可能随时都会停止工作。
答案 2 :(得分:0)
var credentials = new OAuthCredentials
{
Type = OAuthType.ProtectedResource,
SignatureMethod = OAuthSignatureMethod.HmacSha1,
ParameterHandling = OAuthParameterHandling.HttpAuthorizationHeader,
ConsumerKey = TwitterSettings.consumerKey,
ConsumerSecret = TwitterSettings.consumerKeySecret,
Token = this.accessToken,
TokenSecret = this.accessTokenSecret,
Version = "1.0"
};
此处删除Version = "1.0"
所以它看起来像这样:
var credentials = new OAuthCredentials
{
Type = OAuthType.ProtectedResource,
SignatureMethod = OAuthSignatureMethod.HmacSha1,
ParameterHandling = OAuthParameterHandling.HttpAuthorizationHeader,
ConsumerKey = TwitterSettings.consumerKey,
ConsumerSecret = TwitterSettings.consumerKeySecret,
Token = this.accessToken,
TokenSecret = this.accessTokenSecret,
};
然后改变路径:
var restRequest = new RestRequest
{
Path = "1.1/statuses/update.xml?status=" + txtBoxNewTweet.Text
};
最后你必须检查一件事。您在https://apps.twitter.com/
中的应用程序设置将访问级别更改为Read, write, and direct messages (modify app permissions)
如果您无法更改权限,请尝试使用您的手机。从您的手机转到此网址,然后使用您的用户名和密码登录。现在,您可以从移动设备更改设置。现在你可以发布你的twit .. !!