基于有效的离线访问密钥(无限会话密钥)创建Javascript Facebook Connect会话

时间:2010-03-07 05:14:02

标签: c# javascript facebook

我花了整整六个星期六让谷歌筋疲力尽。严肃善良的业力属于任何可以提供帮助的人。

我正在使用.NET Facebook工具包V3来验证我的用户对Facebook。当用户授予offline_access权限时,我存储会话密钥。当他们稍后返回时没有facebook会话(但我的网络应用程序的有效会话)。

我从数据库中获取密钥并将其应用于Facebook.Session,如下所示:

    facebookAPI.Session.SessionKey = offlineAccesSessionKey;
    facebookAPI.Session.UserId = (long)fuid;

像魔术一样工作。

现在这是问题

如何将此无限会话密钥与Javascript API和FBML一起使用?

我可以将会话密钥传递给客户端,但那么呢? getAuth? set_session?不能让它起作用,尽可能地尝试,并且不确定它是否会帮助我使用FBML。

我试过这个:

    facebookAPI.Auth.Session.UserId = (long)fuid;
    facebookAPI.Auth.Session.SessionKey = offlineAccesSessionKey;
    facebookAPI.Auth.Session.SessionSecret = _facebookAPI.Session.SessionSecret;
    facebookAPI.Auth.PromoteSession();

希望它能复制cookie,我可以在客户端接收它们,但没有运气。

看起来它一定是一个非常常见的情况,但我的“专家”谷歌技能正在变为零。

有没有人有任何可以提供帮助的经验?

1 个答案:

答案 0 :(得分:0)

据我所知,Facebook的JS API在其使用时生成自己的会话(如果我错了,请纠正我)。该会话是临时的,因此无法在服务器上使用其令牌。

您可以做的是将uid与(无限)令牌一起存储在数据库中。然后使用JS API,您可以从客户端获取uid,发送到服务器,然后从数据库中检索令牌。然后,您可以代表用户执行正常的服务器端连接。

我希望它有所帮助。