Facebook注册/登录

3
我正在尝试将Facebook Connect集成到我的网站上,有几个问题需要解决。
1:是否可以使用用户当前的Facebook电子邮件/密码在我的网站上注册用户?
假设用户点击“通过Facebook注册”链接,然后他必须给我访问他的密码、电子邮件等权限...完成后,我将该信息放入自己的数据库中,他随时可以使用该帐户登录,无需在未来每次都授予权限。
2:如果不可能进行此类注册,那么对我而言最好的其他解决方案是什么?因为我需要以某种方式跟踪使用Facebook登录的用户,因为他可以上传照片、发送消息等。
总之,我对Facebook和类似的事情还很陌生,所以我真的很迷茫,在这里希望有人能帮助我 :)
编辑感谢大家提供的精彩答案,这对我很有帮助,现在只剩下阅读文档了 :)
4个回答

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不会在用户授予权限后反复要求权限。因此,您可以存储访问令牌并将其重用于后端的操作,并使用您用于注册的相同过程进行登录。


3
  • 即使用户同意,你也不能从Facebook中获取用户的密码,因此用户始终需要通过Facebook进行身份验证,并在身份验证成功后由Facebook传递给你已登录用户的用户ID。你可以本地存储各种其他数据,但不足以自己验证用户。

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


2
Facebook不会提供访问权限,当密码从您的控件中被拿走时。它为登录信息提供自己的画布。因此,您不能使用第一种方法将密码存储在您的数据库中。点击这里查看详情。
然而,一旦用户使用Facebook SDKs登录到他的账户中,您可以存储电子邮件地址。请点击这里获取C# SDK示例代码的链接。 您可以使用Facebook API获取用户的电子邮件地址、照片、好友列表和其他信息,然后相应地进行操作。

1
  1. 您无法访问用户的密码 - 只有在请求时才能获取电子邮件。

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

如果您想允许用户在没有Facebook的情况下注册,则需要为其密码和Facebook ID设置可为空的字段,并且还需要一个用户名字段 - 如果他们通过该路线注册,则可以从Facebook填充该字段。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接