Мы создаем приложение, которое в рамках своей функциональности пытается определить количество лайков, связанных с конкретным видео, принадлежащим пользователю.
Пользователям приложения предлагается расширенный автономный доступ, и мы фиксируем ключ для каждого пользователя:
Формат выглядит следующим образом: 2.hg2QQuYeftuHx1R84J1oGg __. XXXX.1272394800-nnnnnn
Каждый пользователь имеет свой автономный / бесконечный ключ, хранящийся в таблице в БД. Интересующий нас object_id также хранится в БД.
На более позднем этапе (в автономном режиме) мы пытаемся запустить пакетное задание, которое считывает количество лайков для видео каждого пользователя. (См. Прикрепленный код)
По какой-то причине, однако, после первой итерации цикла, которая правильно выдает лайки, мы получаем ошибку с очень знакомым сообщением:
«Ключ сессии недействителен или больше не действителен»
Любое понимание будет наиболее ценно.
Спасибо
B
List<DVideo> videoList = db.SelectVideos();
foreach (DVideo video in videoList)
{
long userId = 0;
ConnectSession fbSession = new ConnectSession(APPLICATION_KEY, SECRET_KEY);
//session key is attached to the video object for now.
fbSession.SessionKey = video.UserSessionKey;
fbSession.SessionExpires = false;
string fbuid =video.FBUID;
long.TryParse(fbuid, out userId);
if (userId > 0)
{
fbSession.UserId = userId;
fbSession.Login();
Api fbApi = new Facebook.Rest.Api(fbSession);
string xmlQueryResult = fbApi.Fql.Query("SELECT user_id FROM like WHERE object_id = " + video.FBVID);
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(new StringReader(xmlQueryResult));
int likesCount = xmlDoc.GetElementsByTagName("user_id").Count;
//Write entry in VideoWallLikes
if (likesCount > 0)
{
db.CountWallLikes(video.ID, likesCount);
}
fbSession.Logout();
}
fbSession = null;
}