Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/228.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
Facebook PHP SDK–;我如何知道$facebook->;getUser()是我需要的用户吗?_Php_Facebook_Facebook Graph Api_Facebook Php Sdk - Fatal编程技术网

Facebook PHP SDK–;我如何知道$facebook->;getUser()是我需要的用户吗?

Facebook PHP SDK–;我如何知道$facebook->;getUser()是我需要的用户吗?,php,facebook,facebook-graph-api,facebook-php-sdk,Php,Facebook,Facebook Graph Api,Facebook Php Sdk,这很难用几句话来解释,所以让我更精确一点 我有一个网站,可以选择连接到facebook以提供更多功能。对于这些功能,该站点通过graph api获取一些信息:基本配置文件+好友 一些用户直接与Facebook连接,而另一些用户则通过登录/密码以更经典的方式连接 对于那些使用登录名和密码进行连接,并希望将其帐户连接到facebook的用户,我将使用php SDK以通常的方式进行操作。改编自: 问题是,如果用户从朋友的设备连接,浏览器很可能连接到他朋友的facebook,而不是我的用户。或者可能根本

这很难用几句话来解释,所以让我更精确一点

我有一个网站,可以选择连接到facebook以提供更多功能。对于这些功能,该站点通过graph api获取一些信息:基本配置文件+好友

一些用户直接与Facebook连接,而另一些用户则通过登录/密码以更经典的方式连接

对于那些使用登录名和密码进行连接,并希望将其帐户连接到facebook的用户,我将使用php SDK以通常的方式进行操作。改编自:

问题是,如果用户从朋友的设备连接,浏览器很可能连接到他朋友的facebook,而不是我的用户。或者可能根本没有连接到facebook的用户

因此,$facebook->getLoginUrl()不会连接到我用户的facebook,而是连接到他的朋友的facebook。这很烦人,因为如果他的朋友从未连接过我的应用程序,它会弹出自动化对话框

或者,如果没有连接的用户,它会要求连接到一个人的facebook帐户

在这两种情况下,我都不希望通过loginUrl连接到Facebook,而是使用令牌(存储在数据库中)访问所需的数据。然而,这些代币只能使用60天,因此每次用户可以通过loginUrl进行连接时,它都会刷新代币的到期日期,这会更好

最后,我的问题是:是否有可能在重定向到loginUrl之前知道用户的id,或者知道是否没有用户连接到facebook


或者有没有其他解决方案可以避免提示“身份验证”对话框?

因为您使用的是第三方登录系统,我想说您并不是真正处理敏感信息。很可能你正在处理某种社区网络。我不会太担心你面临的问题,因为如果用户不想让别人看到这些敏感信息,他们会从facebook注销。尽管你可以做的一个解决方案是清除facebook cookies并强制网站注销它们。但您的用户可能不喜欢这样。所以你可以这么做

>>clear face book cookies
>>ask login info
>>relog into facebook
重新进入脸谱可能有点棘手,但我相信你能找到答案


要确定您的问题是否可以在重定向到登录url之前知道用户id,答案是“是”。只要检查facebook Cookie并对其进行解码即可。

这一点也不烦人,这是预期的行为。“在重定向到loginUrl之前是否可能知道用户的id”-前提是他们已经“连接”,并且您的域下的Cookie仍然存在。但这对您的设备上用户场景没有帮助。“或者知道是否没有用户连接到facebook”-SDk不久前有一个方法
getLoginStatusUrl
(它可以向您提供用户是否登录到facebook的信息),但现在已经不推荐了。这太糟糕了。我只是想避免在涉及朋友帐户时请求权限,因为一旦连接,我就会获得facebook的用户id,我会丢弃这些信息,因为它们不相关(我网站上的bob帐户必须与bob的facebook帐户同步,而不是alice的帐户,否则就是胡说八道)@lagbox我知道这是预期的行为,但对用户体验来说很烦人。我发现,第一次连接到应用程序时,你必须查看它要求的权限,这很正常,但就像你将spotify帐户与facebook同步一样,当你尝试从朋友的设备连接时,会出现一个身份验证对话框,请求对你朋友的facebook帐户授予权限,因为你连接到你的spotify帐户。它应该只检测到它不是正确的FB帐户,并在auth对话框之前跳过auth过程。我希望我说得够清楚:)当然它不是真的在处理敏感信息。实际上,这个问题相当于用户体验的问题。对于一个用户来说,如果有一个提示要求连接到facebook,或者有一个需要朋友帐户权限的身份验证对话框(例如,朋友的计算机,因此他的cookie对应于他的facebook帐户),这是很烦人的。关于facebook cookies,我无法检查它们,因为它们不属于我的域…唯一的解决方案是强制facebook注销,因为facebook不允许多次登录。强迫用户从facebook注销可能也很烦人。如果你是一个真正的专业人士(如果我认为你自己做不到的话,我会建议你),你可以让登录页面像普通页面一样,让他们输入用户名和密码,检查facebook cookie中的用户名,并将密码与facebook哈希进行比较。只需查看Cookie并尝试查找漏洞。@user face palm no您没有直接访问第三方域Cookie的权限。这需要一些黑客,而且是可以做到的,我以前也做过类似的黑客。你能给一些资源链接吗?真的吗?只需创建一个iframe并为cookies注入javascript?
>>clear face book cookies
>>ask login info
>>relog into facebook