我正在努力与facebook图片上传 . 我正在使用Facebook C#SDK 5.4.1从我的Silverligth 5应用程序(在浏览器中)上传图片 .
身份验证正在运行,我获得了具有所需权限的访问令牌 . (我将访问令牌存储在cookie中,因为我不希望我的Silverlight应用程序重新加载 . )
这是我的代码:
void img_LoadingCompleted(object sender, EventArgs e)
{
Dispatcher.BeginInvoke(new Action(() => { string fbcode = ReadCookie("FBCode");
ExtendedImage img = sender as ExtendedImage;
string myAppId = "MY_APPID";
string myAppSecret = "MY_SECRET";
FacebookClient fbclient = new FacebookClient(fbcode);
fbclient.PostCompleted += new EventHandler<FacebookApiEventArgs>(fbclient_PostCompleted);
FacebookMediaObject image = new FacebookMediaObject
{
ContentType = "image/jpg",
FileName = "Testpic"
};
image.SetValue(img.Pixels);
IDictionary<string, object> photoDetails = new Dictionary<string, object>
{
{"message", "Test"},
{"source", image}
};
fbclient.PostAsync("/me/photos", photoDetails);
}));
}
void fbclient_PostCompleted(object sender, FacebookApiEventArgs e)
{
if (e.Cancelled)
{
Dispatcher.BeginInvoke(new Action(() =>
{
MessageBox.Show("Cancelled: "+e.Error);
}));
}
}
在FacebookClient的PostCompleted事件中抛出异常 .
{System.ArgumentNullException: Der Wert darf nicht NULL sein.
Parametername: stream
bei System.IO.StreamReader..ctor(Stream stream, Encoding encoding, Boolean detectEncodingFromByteOrderMarks, Int32 bufferSize, Boolean leaveOpen)
bei System.IO.StreamReader..ctor(Stream stream)
bei Facebook.FacebookClient.ProcessResponse(HttpHelper httpHelper, Stream responseStream, Type resultType, String& responseStr, Exception& exception, Boolean& cancelled)}
谢谢你的帮助 .
1 回答
我自己想出了问题 .
如果图像编码错误,则'll get the ArgumentNullException because Facebook simply doesn' t无响应 . 我也试过这个solution(稍微调整一下代码因为Silverlight 5不支持WriteableBitmap.SaveJpeg())而HTTP错误404就是我得到的响应 .
如果其他人遇到类似的问题(并且像我一样困惑:-))也许我可以帮助解决以下问题(使用Facebook C#SDK 5.4.1和Silverlight 5 In-Browser):
变量Img是WriteableBitmap的位置 . 对于正确的编码我正在使用Imagetools from Codeplex
注意:您需要有效的access_token才能使其正常工作!