Facebook /离线权限 - 尝试对一组离线用户执行操作

时间:2010-04-27 22:06:19

标签: c# session facebook offline

我们正在构建一个应用程序,其部分功能是尝试捕获与用户拥有的特定视频相关联的相似数量。

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

格式如下: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;
   }

1 个答案:

答案 0 :(得分:0)

您说您已经要求用户进行扩展的离线访问,但是通过查看您的访问令牌,它并不长久。你的令牌是2.hg2QQuYeftuHx1R84J1oGg __。XXXX.1272394800 -nnnnnn,在其中,“1272394800”是到期纪录时间。