我正在尝试创建一个可以显示用户相册的简单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)如何“授权”用户并且实际需要它?也许我错过了一些权限......
答案 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。