機能の一部として、ユーザーが所有する特定の動画に関連付けられているいいねの数を取得しようとするアプリを作成しています。
アプリのユーザーはオフライン アクセスの延長を求められ、各ユーザーのキーを取得します。
フォーマットは次のようになります: 2.hg2QQuYeftuHx1R84J1oGg__.XXXX.1272394800-nnnnnn
各ユーザーは、DB のテーブルに格納されたオフライン/無限キーを持っています。関心のある object_id も DB に格納されます。
後の段階 (オフライン) で、各ユーザーのビデオのいいね! の数を読み取るバッチ ジョブを実行しようとします。(添付コード参照)
ただし、何らかの理由で、ループの最初の繰り返しの後 (いいね! を正しく生成する)、おなじみのメッセージで失敗します。
「セッションキーが無効であるか、有効ではありません」
どんな洞察でも大歓迎です。
ありがとう、
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;
}