Laravel Socialite正在使用OAuth 2.0。对于facebook来说是丑陋的。当我们可以使用弹出窗口时,我不喜欢将用户发送到Facebook页面并让他们返回的想法。
因此,我的计划是使用javascript api
中的标准Facebook弹出窗口。
拳头-使用Basic Setup 获取javascript库
秒-使login dialog正常工作。
工作正常,我得到userID
和accessToken
。
现在问题开始
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
的情况下对用户进行身份验证?渔获物在哪里?
答案 0 :(得分:1)
您需要使用hellojs之类的东西。
Hellojs允许您打开一个弹出窗口,供用户使用Facebook / Google / .. etc登录。由此您可以获取access_token。要获取此访问令牌,您仅需要应用ID,因此您无需在客户端共享应用秘密
然后,您将access_token发送到控制器,并通过服务器的另一个请求获取用户信息(这是laraval社交名流使用应用程序密码的地方)
$user = Socialite::driver('facebook')->userFromToken($access_token);
希望有道理。