2012-03-10 184 views
3

我想实现Facebook连接到我的网站,我有几个问题。Facebook的注册/登录

1:是否可以使用他当前的Facebook电子邮件/密码在我的网站上注册用户。

比方说,用户点击链接Register via facebook,然后他必须给我permisions访问他的密码,电子邮件等......之后,我把这些信息放在我自己的数据库中,他将能够登录随时随地可以随时随地使用该账户,而不需要在将来给予我任何时间。

2:如果这种注册是不可能的,那么对我来说最好的解决方案是什么?因为我需要以某种方式跟踪那些用facebook登录的用户,因为他可以上传照片,发送消息等。

反正,我对facebook和类似的东西很新,所以我真的迷失在这里,希望有人能帮助我:)

编辑谢谢大家的精彩回答它帮了我很多,现在所有剩下的就是阅读文档:)

回答

6

是的,有可能获取用户的信息。但是,如果你从来没有处理过这个问题,那就太复杂了。

首先,你需要给用户发送到以下链接:然后

https://m.facebook.com/dialog/oauth?client_id=your-client-id&redirect_uri=xxx&scope=listof-information-you-want 

Facebook将您的客户端返回指定的URI,如果用户拒绝它会给一个原因。如果不是,你会得到一个urlencoded格式的代码。

需要以下步骤,访问令牌的请求,此代码:

https://graph.facebook.com/oauth/access_token?redirect_uri=xxx&client_id=xxx&client_secret=xxx&code=xxxx 

这会给后面的访问令牌,如果授权没有失败。

这之后你可以要求你想要的信息:

https://graph.facebook.com/me?method=GET&metadata=true&format=json&access_token=access_token 

这将包括Facebook的UID,这是对所有用户是唯一的。存储它,你可以辨别注册和登录。

这大致是任何oauth2应用程序的过程。

Facebook在用户授予您后将不会重复询问权限。因此,您可以存储访问令牌并将其用于后端内容,并使用您用于注册登录的相同过程。

1
  1. 如果您要求,您无法访问用户密码 - 仅限电子邮件。

  2. 最好的办法是有一个用户和他们的Facebook帐户ID的表。

如果你想允许用户注册时没有的Facebook则对他们的密码和Facebook ID可为空场,同时还提供了用户名现场 - 你可以从Facebook,如果他们通过这条路线注册填充。

3
  • 你永远无法从Facebook访问用户的密码,即使他/她的许可,因此用户将始终通过Facebook有身份验证,并已Facebook的通过你的登录用户一旦身份验证的用户ID成功。您可以在本地存储各种其他数据,但不足以自己对用户进行身份验证。

  • 一旦用户通过身份验证,您就可以通过API访问用户的Facebook用户ID,这应该足以将各种信息连接到该特定用户。

2

当从您的控件中获取密码时,Facebook不提供对帐户的访问。它提供了自己的登录信息画布。因此,您不能使用第一种方法将密码存储在数据库中。 Check this out

然而,一旦用户使用Facebook sdks登录到他的账户,您就可以存储电子邮件地址。以C#SDK示例代码为例,查看link。 您可以使用Facebook API来获取用户的电子邮件ID,照片,朋友列表和其他信息,然后相应地播放。