2011-05-12 172 views
2

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

+0

您必须向zuckerberg发送一些钱才能获得Facebook的后门API。那么你不需要任何访问令牌。 :) – ibram 2011-05-12 07:46:28

+0

你能告诉我我应该多少次收到令牌存取权吗? – linuxx 2011-05-12 07:55:42

+0

或者你能回答我的问题吗?:) – linuxx 2011-05-12 07:55:55

回答

0

第一件事:听起来您要添加的范围offline_access,因为你正在试图做的是真正撬动FB认证机制。

另外:这是可能比较容易使用FB连接按钮和JavaScript客户端API,除非你打算使用来自后端服务器的图形或REST API。

如果ARE打算使用后端API集成看过这一段: 我发现它有助于确保您使用的是正确的身份验证URL(我用www.facebook.com/dialog/oauth但其他人在过去工作..)。只是不要使用仅授权URL,否则用户将被强制重复授予权限(从未真正理解该“功能”)。接下来使用请求令牌将用户重定向到URL,并将请求保密在服务器端(或者在客户端进行加密)。登录后,您将收到带有OAuth验证程序的回调。使用Verifier访问验证URL graph.facebook.com/oauth/access_token,您将收到OAuth访问令牌。保存该令牌以及用户标识。

至于检查当前用户登录和/或授权您的应用程序和/或有使用你的应用程序的朋友:

看一看FB连接API: http://developers.facebook.com/docs/guides/web/#login

通话FB.init第一,然后当你打电话FB.getLoginStatus,你会如果当前用户登录到FB和以前授权您的应用程序获取OAuth令牌(通过连接按钮或OAuth的流量):

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

当结合提到的身份验证流程,那些已经授权的应用程序将获得相同的OAuth访问令牌从以前的调用返回,你可以用JS客户端,使用图形,或REST API的用户执行。