首页 文章

在移动应用程序中使用Facebook和用户注册登录

提问于
浏览
1

我有一个Android应用程序,用户可以通过他们的Facebook帐户使用它 . 为此,我整合了Facebook登录 . 但是,我对Facebook的用户注册感到困惑 .

当用户登录时,Facebook提供userId,电子邮件和访问令牌 . 我可以使用它们为我的后端用户创建一个帐户 . 让我们演示一下这个场景:

用户第一,

1- User logged-in by Facebook.
    2- The email is checked by server and returns no such user
    3- An account is created by the information from Facebook
    4- The user keeps using the app with this account.

用户又来了,

1- User logged-in by Facebook.
    2- The email is checked by the server and returns that there exists a user.

在这里,这里是问题:

1-服务器如何信任来自真正Facebook的请求,以便服务器可以响应“他可以登录”的应用程序?当然,我是否应该通过连接到服务器端的Facebook来验证访问令牌?

2-如果没有,如何以非常安全的方式使用Facebook登录注册用户?

一个类似的问题被问到here,但没有答案作为解决方案 .

1 回答

  • 1

    我已经研究过,最后决定采用以下步骤:

    1- 该应用程序使用Facebook登录并获取访问令牌,电子邮件,名称和userId .

    2- 应用程序连接到API(服务器端),发送从Facebook收集的信息

    3- 服务器获取访问令牌并使用以下内容对其进行验证:

    https://graph.facebook.com/me?access_token={ACCESS-TOKEN}
    

    它返回以下内容:

    {"name":"{USER-NAME}","id":"{USER-ID}"}
    

    4- 服务器检查两个用户ID是否相同 . 如果是,则验证令牌是否来自Facebook,并且该信息可用于登录/注册 .

    5- 服务器检查系统中是否存在电子邮件/用户ID(fb id) . 如果没有,则创建用户(触发注册过程) . 如果是,则将login设置为success,服务器返回刚生成的access-token和refresh-token的用户信息 .

    6- 其他操作都是通过以oAuth方式使用这些访问和刷新令牌而不再连接Facebook来执行的 .

    每次打开应用程序时, AccessToken.getCurrentAccessToken() 都会从Facebook获取访问令牌 . 如果为null,则用户将看到登录屏幕 . 如果不是,则将应用上述步骤 .

    Good Questions and Answers Related This Topic:

    REST API for website which uses Facebook for authentication

    Architecture Design - REST API to support Facebook Login done by Mobile app

    关于Facebook本身已有的用户,合并操作和数据结构建议:

    Essential Guides of Facebook

    Using Facebook Login with Existing Login Systems

相关问题