Facebook 在 web laravel 和 android 移动应用程序上登录

Posted

技术标签:

【中文标题】Facebook 在 web laravel 和 android 移动应用程序上登录【英文标题】:Facebook login on web laravel and android mobile application 【发布时间】:2015-05-30 20:41:34 【问题描述】:

我正在尝试开发两个应用程序网络和移动。 Web 和 API 使用 laravel 5 完成。两者都使用电子邮件/密码授权和 facebook 登录。移动应用程序将使用提到的 API。 (我知道我可以将 API 与 AngularJS 一起用于 Web 应用程序,但目前这有点太高级了)

我设法将 facebook 与 larvel 结合,因此我可以使用凭据创建和登录应用程序或使用 facebook 登录。用户存储在用户表中,如果用户使用 FB 登录,则其访问令牌存储在同一个表中。 android 移动应用程序通过 facebook SDK 使用 facebook 登录。我对具有相同权限范围的两者使用相同的 facebook 应用程序 ID。我的问题是两个进程生成的访问令牌不同,因此通过 Web 应用程序使用 facebook 的用户与通过移动设备使用 facebook 的用户具有不同的令牌。

因此,如果我按照逻辑,识别 facebook 用户以通过电子邮件和访问令牌访问后端数据不起作用,因为表中的电子邮件字段是唯一的,并且通过从 Web 或移动应用程序覆盖访问令牌是没有意义的。所以场景是我有两个不同的用户,即使他们来自同一个 Facebook 帐户。

我怀疑我的逻辑不正确,并想向您寻求帮助/解释在网络和移动应用程序上同时授权同一 facebook 用户的正确方法是什么。

【问题讨论】:

【参考方案1】:

您应该使用 fbid 来识别用户,而不是访问令牌。它是从 facebook api 返回的响应的一部分。

对于 php: https://developers.facebook.com/docs/php/howto/profilewithgraphapi/4.0.0

对于安卓: https://developers.facebook.com/docs/android/graph

【讨论】:

感谢您的及时回复。我不会说我在识别用户时遇到问题,而是使用带有图形 api 的访问令牌。 developers.facebook.com/docs/facebook-login/access-tokens 提供令牌是可移植的,所以这就是我将其存储在数据库中的原因,以便我可以读取它们并用于从移动设备或网络查询图形。 @dascorp 嗯。我明白你的意思,你可以存储访问令牌以及将来访问图形 api。但是使用访问令牌作为唯一标识符,在不同设备上登录时不是解决方案(必然会生成不同的访问令牌)。您可能会遇到与上述问题陈述中解释的相同的问题。

以上是关于Facebook 在 web laravel 和 android 移动应用程序上登录的主要内容,如果未能解决你的问题,请参考以下文章

Laravel Socialite 与 Facebook 未登录

在 laravel 中使用社交名流登录 Facebook

在 laravel 中访问 facebook php sdk 4.0 和 Javascript sdk 上的 Token

带有 Laravel 后端和 React Native 应用程序的 Facebook 和 JWT Auth

社交名流 laravel 5.4 Facebook 提供商

使用 Laravel Socialite 登录 Facebook