c#facebook访问令牌

时间:2011-05-12 07:14:21

标签: facebook

当客户端在我的Facebook帐户上允许我的应用程序时,我会收到访问令牌。基于该访问令牌和网址,我可以打印他的所有朋友。我有一个问题:用户登录他的应用程序时是否会出现此访问令牌?我问这个是因为第二次用户登录我的应用程序,我有一个网络浏览器,朋友列表不会弹出,因为该网站的响应不再包含访问令牌。我哪里错了?我怎样才能在用户接受我的应用程序后检查他是否在线或已经进入 - 如果我想打印他的朋友。

1 个答案:

答案 0 :(得分:0)

第一件事:听起来你想要添加范围offline_access,因为你要做的是真正利用FB身份验证机制。

另外:使用FB Connect按钮和JavaScript Client API可能最简单,除非您打算从后端服务器使用图形或REST API。

如果 ARE 打算使用后端API集成,请阅读以下内容: 我发现确保您使用正确的身份验证URL有帮助(我使用www.facebook.com/dialog/oauth,但其他人过去曾工作过......)。只是不要使用仅授权的URL,否则将强制用户重复授予权限(从未真正理解'功能')。接下来,使用请求令牌将用户重定向到URL,并在服务器端保密您的请求(如果在客户端,则保持加密)。登录后,您将收到OAuth Verifier的回调。使用Verifier访问验证网址graph.facebook.com/oauth/access_token,您将收到OAuth访问令牌。保存该令牌以及用户ID。

至于检查当前用户是否已登录,和/或是否已授权您的应用和/或让朋友使用您的应用:

看看FB Connect API: http://developers.facebook.com/docs/guides/web/#login

首先拨打FB.init,然后当您拨打FB.getLoginStatus时,如果当前用户登录到FB并且之前已经授权您的应用(通过“连接”按钮或OAuth流程):

$wnd.FB.getLoginStatus(function(response) {
  if (response.session)
    var authToken = encodeURIComponent(response.session.access_token);
});

当与所提到的身份验证流程一起执行时,已经授权您的应用程序的用户将获得从先前调用返回的相同OAuth访问令牌,您可以将其与JS客户端,图形或REST API一起使用。