使用PHP中的弹出窗口进行Facebook身份验证-如何使用accessToken和应用程序秘密

时间:2018-09-14 08:41:57

标签: laravel facebook-authentication laravel-socialite

Laravel Socialite正在使用OAuth 2.0。对于facebook来说是丑陋的。当我们可以使用弹出窗口时,我不喜欢将用户发送到Facebook页面并让他们返回的想法。

因此,我的计划是使用javascript api中的标准Facebook弹出窗口。

拳头-使用Basic Setup 获取javascript库

-使login dialog正常工作。

工作正常,我得到userIDaccessToken

现在问题开始

accessToken-正在老化,我无法将其保存在数据库中,以后再用作密码。

因此,除了保存accessToken之外,还有另一种方法-如果我的服务器像这样直接向Facebook提出了api请求,则可以使用另一个名为graph api的facebook api通过令牌来获取用户

https://graph.facebook.com/me?access_token=...

我会像这样获得一个user_id

  

{      “ name”:“ Bob Marley”,      “ id”:“ 111111”   }

并且我可以确定这个身份,因为我只是直接用facebook服务器检查了令牌。听起来像是理想的世界。

但是,有两件事让我感到紧张:

1)我是否真的结合了2种不同的api,或者这是一种标准方法?

2)如何在不使用facebook app secret的情况下对用户进行身份验证?渔获物在哪里?

1 个答案:

答案 0 :(得分:1)

您需要使用hellojs之类的东西。

Hellojs允许您打开一个弹出窗口,供用户使用Facebook / Google / .. etc登录。由此您可以获取access_token。要获取此访问令牌,您仅需要应用ID,因此您无需在客户端共享应用秘密

然后,您将access_token发送到控制器,并通过服务器的另一个请求获取用户信息(这是laraval社交名流使用应用程序密码的地方)

$user = Socialite::driver('facebook')->userFromToken($access_token);

希望有道理。