0

我们正在构建一个应用程序,该应用程序的部分功能试图捕获与用户拥有的特定视频相关的点赞数。

应用程序的用户被要求扩展离线访问,我们为每个用户捕获密钥:

格式是这样的:2.hg2QQuYeftuHx1R84J1oGg__.XXXX.1272394800-nnnnnn

每个用户都有他们的离线/无限键存储在数据库的表中。我们感兴趣的 object_id 也存储在 DB 中。

在稍后阶段(离线),我们尝试运行一个批处理作业,读取每个用户视频的点赞数。(见附件代码)

然而,出于某种原因,在循环的第一次迭代之后——正确地产生了喜欢,我们得到了一个失败的消息:哦,太熟悉了:

“会话密钥无效或不再有效”

任何见解将不胜感激。

谢谢,

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;
   }
4

1 回答 1

0

您说您已要求用户延长离线访问权限,但通过查看您的访问令牌,它并不长久。您的令牌是 2.hg2QQuYeftuHx1R84J1oGg__.XXXX.1272394800-nnnnnn,其中的“1272394800”是到期时间。

于 2010-05-04T17:17:30.627 回答