2011-05-28 119 views
-1

验证用户身份后,我将授权令牌保存在数据库中。比我把他的ID保存在一个cookie里面。每次他访问一个页面时,我都会检查cookie是否在那里。如果它不在那里,我尝试获得另一个授权cookie并替换数据库中的旧的,并创建该cookie。facebook身份验证 - 这种使用令牌是否正确?

我有一种深刻的感觉,我错了:0你能告诉我该怎么处理这个问题吗?

回答

0

你不应该直接处理cookie,而是使用一个SDK来为你做。对于C#,您可以使用Facebook C# SDK。如果你想有一个好的概述,请查看API Quickstart guide

您应该将令牌存储在您的数据库只有如果你问offline_access许可,当你访问令牌,因为令牌在几个小时后到期。

如果您在获取令牌时确实要求获得offline_access权限,则可以将其存储在数据库中并随时使用该令牌进行API调用(无需检查用户会话或cookie)。

希望有帮助!

+0

谢谢昆汀。你能不能简单地解释我是如何工作的?FacebookWebClient是否将令牌存储在某个静态字段中?例如,如果我想在index.aspx上获取用户名,并且我想在用户导航到about.aspx时获取该名称,那么每个页面上应该包含哪些代码?你可以编辑你的答案来解释这一点。这对我非常有帮助 – Ryan 2011-05-28 14:25:14

+0

我不知道ASP.NET,但SDK可以做的是将访问令牌存储在会话中,只要会话处于活动状态并且用户si仍然连接,您就可以继续进行API调用。看起来,当用户登录时,你只需要创建'var client = new FacebookWebClient();'然后进行API调用(比如'client.Get(“me”)')。 – Quentin 2011-05-28 15:08:34

+0

@Ryan访问令牌也可能存储在用户cookie中。否则,每次他的会话在服务器中到期时,他都必须重新进行身份验证。 – Quentin 2011-05-28 16:39:42