[英]tweet with picture not working
我試圖根據msdn示例中的代碼示例發布圖片,但它不起作用,為什么? 是Twitter更改了api政策嗎? 這是我的代碼
public void postToTwitter()
{
try
{
var image = new WriteableBitmap(430, 400);
image.Render(locationPict, null);
image.Invalidate();
MemoryStream ms = new MemoryStream();
image.SaveJpeg(ms, 430, 400, 0, 100);
const string filename = "/Shared/ShellContent/image.jpg";
using (var isf = IsolatedStorageFile.GetUserStoreForApplication())
{
if (!isf.DirectoryExists("/post"))
{
isf.CreateDirectory("/post");
}
using (var stream = isf.OpenFile(filename, System.IO.FileMode.OpenOrCreate))
{
image.SaveJpeg(stream, 430, 400, 0, 100);
}
}
var credentials = new OAuthCredentials
{
Type = OAuthType.ProtectedResource,
SignatureMethod = OAuthSignatureMethod.HmacSha1,
ParameterHandling = OAuthParameterHandling.HttpAuthorizationHeader,
ConsumerKey = twitterAppSettings.consumerKey,
ConsumerSecret = twitterAppSettings.consumerKeySecret,
Token = MainUtil.GetKeyValue<string>("twitterAccessToken"),
TokenSecret = MainUtil.GetKeyValue<string>("twitterAccessTokenSecret"),
Version = "1.0"
};
var restClient = new RestClient
{
Authority = "https://api.twitter.com",
HasElevatedPermissions = true
};
var restRequest = new RestRequest
{
Credentials = credentials,
Path = "1.1/statuses/update_with_media.json",
Method = WebMethod.Post
};
restRequest.AddField("status", textpost.Text);
restRequest.AddFile("media[]", image.jpg, ms, "image/jpg");
restClient.BeginRequest(restRequest, new RestCallback(PostTweetRequestCallback));
}
catch(Exception ex)
{
string message = "Tweet failed! Exception details: " + ex.ToString();
MessageBox.Show(message);
}
}
private void PostTweetRequestCallback(RestRequest request, RestResponse response, object obj)
{
Deployment.Current.Dispatcher.BeginInvoke(() =>
{
if (response.StatusCode == HttpStatusCode.OK)
{
MessageBox.Show("TWEET_POSTED_SUCCESSFULLY");
}
else if (response.StatusCode == HttpStatusCode.Forbidden)
{
MessageBox.Show("TWEET_POST_ERR_UPDATE_LIMIT");
}
else
{
MessageBox.Show("TWEET_POST_ERR_FAILED");
}
});
}
我在代碼中做了一些調整,以便代替像msdn示例中那樣從photochooser任務拍照,而是從保存到隔離存儲中的writeablebitmap中獲取它,但是我也已經嘗試過與msdn中的完全一樣,並得到錯誤TWEET_POST_ERR_FAILED
嘗試將字符串“ form-data”作為第五個參數添加到restRequest.AddFile:
restRequest.AddFile("media[]", image.jpg, ms, "image/jpg","form-data");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.