Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel PHP中带有弹出窗口的Facebook身份验证-如何使用accessToken和应用程序机密_Laravel_Facebook Authentication_Laravel Socialite - Fatal编程技术网

Laravel PHP中带有弹出窗口的Facebook身份验证-如何使用accessToken和应用程序机密

Laravel PHP中带有弹出窗口的Facebook身份验证-如何使用accessToken和应用程序机密,laravel,facebook-authentication,laravel-socialite,Laravel,Facebook Authentication,Laravel Socialite,Laravel Socialite正在使用OAuth 2.0。这对于facebook来说是丑陋的。当我们可以使用弹出窗口时,我不喜欢将用户发送到facebook页面并将其取回的想法 所以,我的计划是使用标准的Facebook弹出窗口 拳头-使用 获取javascript库 秒-开始工作 它可以工作,我可以获得userID和accessToken 现在问题开始了 accessToken-正在老化,我无法将其保存在数据库中,以便以后用作密码 因此,除了保存accessToken之外,还有一种替代方法

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

所以,我的计划是使用标准的Facebook弹出窗口

拳头-使用 获取javascript库

-开始工作

它可以工作,我可以获得
userID
accessToken

现在问题开始了

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

因此,除了保存accessToken之外,还有一种替代方法——如果我的服务器直接向facebook发出api请求,我可以使用另一个facebook api,即通过令牌获取用户

https://graph.facebook.com/me?access_token=...
我会得到一个这样的用户id

{ “姓名”:“鲍勃·马利”, “id”:“111111” }

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

然而,有两件事让我感到紧张:

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


2) 我是如何在不使用facebook app secret的情况下对用户进行身份验证的?哪里有陷阱?

您需要使用类似hellojs的东西

Hellojs允许您打开一个弹出窗口,供用户使用Facebook/Google/等登录。从这里您可以获得访问令牌。要获取此访问令牌,您只需要应用ID,这样您就不会在客户端共享应用机密

然后,您向控制器发送访问令牌,并通过服务器的另一个请求获取用户信息(这是laraval socialite使用app secret的地方)


希望这是有意义的。

如果你可以通过一个模态弹出窗口自由地做这件事,没有人会阻止你做这件事,你是对的。我改变了问题。OAuth2.0是丑陋的,不是拉威尔的社交名流。请帮助我解决我的问题。oAuth 2是web服务中最棒的一款,您通过多次呼叫外部服务使您的应用程序变得昂贵。使用facebook api创建一个应用程序授权登录,并使用该应用程序对用户进行身份验证就这么简单,弹出对话框登录用户重定向身份验证并完成。抱歉,我看不到简单性。如果我错了,请纠正我。你想让我在弹出对话框中创建一个Iframe,将用户发送到facebook页面并返回回我的回调,对吗?然后我需要从iframe告诉主窗口关闭弹出窗口的响应?我不认为在弹出窗口中使用Iframe和从Iframe向家长发送消息很优雅。谢谢。hello js是个好主意。非常感谢你提出的通过查看社交名媛的源代码来找到发送api请求的正确方法的想法。你是对的,我是对的,我们都是对的。万岁
Socialite
函数
userFromToken
正在使用
facebook图形api
。这是facebook驱动程序的社交代码
$meUrl=$This->grapurl./'.$This->version./me?访问\u-token='.$token.&fields='.内爆(',',$This->fields)
而且facebook认证不需要facebook应用程序密码。很高兴我能帮上忙。如果你愿意接受我的回答,你将真正有助于我的声誉。我刚开始在stackoverflow上发帖!谢谢
$user = Socialite::driver('facebook')->userFromToken($access_token);