那么我可以帮你解决这个问题。如果你需要使用FB的JS SDK,那么你必须在客户端或浏览器上做所有事情,因为Facebook在服务器端没有任何对Java的支持。
因此,我建议您可以在客户端上对用户进行身份验证,定义访问用户配置文件的范围,一旦通过用户身份验证,您将获得 JSON 对象的响应,您可以使用 ajax 将其发送到 AppEngine 后端。
我正在分享我使用 FB 登录并访问用户的个人资料信息以及相册和视频中的照片的链接。
http://demositeunicfyp.appspot.com/fb-pictures.html
http://demositeunicfyp.appspot.com/facebook.html
您可以在浏览器中调试 JS 代码,以查看您从 Facebook API 返回的响应对象类型。
$(document).ready(function() {
// Initializing the Facebook SDK
FB.init({
appId : 'XXXXXXXXXXXXXXXX',
status : true,
cookie : true,
xfbml : true,
oauth : true
});
// Method to check if a user is looged in to FB or Not
FB.getLoginStatus(updateButton);
$("#logout").live("click", function(event) {
event.preventDefault();
// FB.getLoginStatus(updateButton);
FB.logout(function(response) {
$("#loginDiv").show();
$("#logoutDiv").hide();
});
});
$("#fbLoginButton").live("click", function(event) {
//event.preventDefault();
FB.getLoginStatus(updateButton);
});
function updateButton(response) {
var button = document.getElementById("fbLoginButton");
if (response.authResponse) {
// user is already logged in and connected
// button.innerHTML = 'Facebook Logout';
//$("#loginDiv").hide();
//$("#logoutDiv").show();
//window.location = '/confirm';
FB.api('/me', function(response) {
$("#userName").text(response.name);
$("#userEmail").text(response.email);
});
} else {
// user is not connected to your app or logged out
// button.innerHTML = 'Facebook Login';
button.onclick = function() {
FB.login(function(response) {
if (response.authResponse) {
// button.innerHTML = 'Facebook Logout';
$("#loginDiv").hide();
$("#logoutDiv").show();
FB.api('/me', function(response) {
$("#userName").text(response.name);
$("#userEmail").text(response.email);
});
} else {
//user cancelled login or did not grant authorization hence do nothing
}
}, {
scope : 'email,publish_actions'
});
}
}
}
});