获取Facebook用户名与javascript SDK和应用程序访问令牌


Get Facebook user name with javascript SDK and app access token

我已经编写了一些php检索facebook用户id,存储在我的数据库中,然后继续请求他们的用户名。这一切都很好,但是这个过程增加了额外的1.8秒的页面加载,我希望尽可能避免。

所以我重建了代码,并添加了一些javascript,它查找用户id,然后请求用户名。这种方法运行得快得多,我的页面加载时间缩短了1.8秒。然而,为了使它工作,我添加我的应用程序访问令牌到javascript,这当然是一个安全黑洞

javascript fb。API调用现在看起来是这样的

        FB.api('/'+userid, {access_token : 'appAccessToken'}, function(response) {
            userNameSpan.text(response.name);
        });

是否有其他方法可以使此工作,而不退回到纯服务器端解决方案,这是非常缓慢的?

最近我的问题没有得到任何答案。无论如何,我能想到的唯一其他解决方案是ajax调用php文件,它将请求用户名本身,或者将用户名与用户id存储在数据库中。

ajax解决方案有很多问题,主要是因为平台是joomla, php是一个自定义模块,这意味着我将不得不在joomla框架之外调用该文件(出现安全问题),或者为自定义模块构建我自己的helper文件,以便它与joomla的com_ajax组件一起工作,这当然是一个时间链接。

数据库解决方案的缺点是用户名不是动态的,这意味着如果一个用户在他/她被添加到数据库之后更改了他/她的用户名,那么我将无法使用该更改。我想我也可以存储用户插入数据库的时间,并检查已经过去了多少时间,并执行facebook请求他/她的用户名只有在预定义的时间已经过去,然后更新数据库,如果用户名已经改变。不是很动态,但足够接近

如果有人有其他的想法,请不要害羞

虽然我打算使用数据库解决方案,但我发现了另一个可以显著减少页面负载的解决方案。

代替对每个用户进行api调用,您可以进行批处理调用,在一次调用中请求有关许多用户的信息。这里有解释https://developers.facebook.com/docs/graph-api/making-multiple-requests

那将把我的电话从6个减少到1个。但是,由于阅读了一些关于facebook名称的信息,我意识到它们不再经常更改,因此数据库解决方案更适合我的情况