2010-10-01 5 views
0

Я использую Facebook-c-sharp для загрузки фотографий в Facebook. Этот код отлично работает, но для новых учетных записей Facebook этот код, похоже, имеет проблемы. Я думал, что это может быть связано с новыми политиками конфиденциальности Facebook, и, кроме того, авторы вышеуказанного кода перестали работать над новыми выпусками. Проблема заключается в создании альбомов. При старой учетной записи FB альбом создается и фотографии загружаются должным образом. Для новой учетной записи (созданной недавно, около 20 дней назад) создается фотоальбом, но когда Facebook возвращает ответ XML, я получаю исключение XMLException, когда пытаюсь десериализовать XML.Исключить исключение XML в ответ Facebook для новых учетных записей

Ответ XML для старого аккаунта ниже

<?xml version="1.0" encoding="UTF-8"?> 
<photos_createAlbum_response xmlns="http://api.facebook.com/1.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://api.facebook.com/1.0/ http://api.facebook.com/1.0/facebook.xsd"> 
    <aid>2470234845268380151</aid> 
    <owner>number</owner> 
    <name>AlbumName</name> 
    <created>number</created> 
    <modified>number</modified> 
    <description>description</description> 
    <location>location</location> 
    <link>url of the album created</link> 
    <size>0</size> 
    <visible>privacy setting</visible> 
    <modified_major>number</modified_major> 
    <object_id>number</object_id> 
</photos_createAlbum_response> 

Ответ XML для новой учетной записи ниже

<?xml version="1.0" encoding="UTF-8"?> 
<photos_createAlbum_response xmlns="http://api.facebook.com/1.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://api.facebook.com/1.0/ http://api.facebook.com/1.0/facebook.xsd"> 
    <aid>100001291780378_24994</aid> 
    <owner>number</owner> 
    <name>AlbumName</name> 
    <created>number</created> 
    <modified>number</modified> 
    <description>description</description> 
    <location>location</location> 
    <link>url of the album created</link> 
    <size>0</size> 
    <visible>privacy setting</visible> 
    <modified_major>number</modified_major> 
    <object_id>number</object_id> 
</photos_createAlbum_response> 

XmlException Я получаю ниже (опять же: это происходит только для новых счетах. старый счет deserialize работает просто отлично)

type=Mono.Facebook.XMLException 

message=Failed parsing XML 

stack= 
    at Mono.Facebook.Util.GetResponse[T](String method_name, FacebookParam[] parameters) 
    at Mono.Facebook.FacebookSession.CreateAlbum(String name, String description, String location) 
    at Facebook.PostToFacebook(List`1 photos, String apiKey, String apiSecret, String authToken) 



type=System.InvalidOperationException 

message=There is an error in XML document (0, 0). 

stack= 
    at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, XmlDeserializationEvents events) 
    at System.Xml.Serialization.XmlSerializer.Deserialize(Stream stream) 
    at Mono.Facebook.Util.GetResponse[T](String method_name, FacebookParam[] parameters) 

Как вы можете см. оба ответа XML от Facebook для старых и новых учетных записей. Но все же для десериализации новой учетной записи не удается. Почему это происходит? Единственное отличие, которое я мог найти в обоих файлах xml, - это наличие «underscore _» в (albumid) во втором файле XML. Но насколько я знаю, символ подчеркивания является допустимым xml и не должен быть проблемой разбора? Может кто-нибудь сказать, почему я получаю эту ошибку.

EDIT:

У меня есть работа. Как упоминалось выше, подчеркивание вызывало проблему. С моей стороны было довольно глупо, что я этого не проверял. В C# код был объявлен как длинный. Поскольку строка с подчеркиванием не может быть десериализована до конца, я получаю исключение. Я скопировал xml-ответ от Facebook в xml-файл, а затем xsd Facebook.xml и xsd Facebook.xsd, чтобы получить Facebook.cs. Я сравнил сгенерированный файл cs с тем, который у меня есть, и увидел, что помощь была объявлена ​​как String в сгенерированных cs и долго в моем файле.

ответ

0

Я получил его работу. Как упоминалось выше, подчеркивание вызывало проблему. С моей стороны было довольно глупо, что я этого не проверял. В C# код был объявлен как длинный. Поскольку строка с подчеркиванием не может быть десериализована до конца, я получаю исключение. Я скопировал xml-ответ от Facebook в xml-файл, а затем xsd Facebook.xml и xsd Facebook.xsd, чтобы получить Facebook.cs. Я сравнил сгенерированный файл cs с тем, который у меня есть, и увидел, что помощь была объявлена ​​как String в сгенерированных cs и долго в моем файле.

0

Хотя это действительно не касается вашего вопроса напрямую, я думаю, что большая проблема здесь заключается в том, что вы используете библиотеку Facebook, которая очень старая и не поддерживается. Я бы очень хотел переключиться на новую библиотеку, которая поддерживает OAuth, Graph API и Rest API. Вот тот, который я создал и порекомендую: http://facebooksdk.codeplex.com

+0

обязательно посмотрите на это. благодаря – user281693

Смежные вопросы