是否需要在facebook innerApp中授权用户?

时间:2013-11-18 20:04:27

标签: facebook

我正在尝试创建一个可以显示用户相册的简单Facebook应用。

我已经在本地glassfish实例上创建了一个简单的java应用程序,并在新创建的facebook应用程序设置中输入了这个localhost url。

但是要在服务器端使用facebook api,我必须指定用户访问令牌。如果我怀疑,应该在客户端生成。

为此,我在我的应用程序的第一页上使用javascript api将此访问令牌作为请求参数之一传递:

$(document).ready(function () {

        FB.init({
            appId: '*****************',
            cookie: true,
            xfbml: true,
            status: true });

        FB.getLoginStatus(function (response) {
            if (response.authResponse) {
                $('#buttonRedirectToAlbums').onclick(new function () {
                    window.location.replace("<c:url value="/helloController/testfacebookapi"/>?access_token=" + response.authResponse.accessToken);
                })
            }
        });

    });

问题是在getLoginStatus中我得到的响应对象没有任何数据,除了授权字段是假的。


所以我有两个问题:

1)开发Facebook应用程序是否正确?或者我是以错误的方式使用他们的api?

2)如何“授权”用户并且实际需要它?也许我错过了一些权限......

1 个答案:

答案 0 :(得分:1)

是的,用户必须对您的应用程序进行身份验证。

关于这种方法,我建议你去this document。我想你错过了检查响应状态的方法。该文档将告诉您处理与用户相关应用状态相关的3种不同案例的正确方法。

在您的代码中,您缺少处理用户未连接到您的应用或已注销的情况的部分。您可以修改代码,使其类似于:

$(document).ready(function () {

        FB.init({
            appId: '*****************',
            cookie: true,
            xfbml: true,
            status: true });

        FB.getLoginStatus(function (response) {
            if (response.authResponse) {
                $('#buttonRedirectToAlbums').onclick(new function () {
                    window.location.replace("<c:url value="/helloController/testfacebookapi"/>?access_token=" + response.authResponse.accessToken);
                })
            }
            else{
                //Ask user to login or allow your App to access data.
            }
        });

    });

有关实际实施方式的进一步参考,您可以参考this example