以下javascript代码适用于出现的facebook登录窗口并允许用户登录。捕获响应值,我知道它可以在设置中出现警报,但我无法将值传递回控制器方法。
@RequestMapping(value ="/getAccessToken" , method = RequestMethod.POST)
public @ResponseBody String getAccessToken(@RequestBody String token){
System.out.println(token);
return token;
}
Javascript方法叫做:
function doLogin() {
FB.login(function(response) {
alert(response);
console.log(response);
if (response.authResponse) {
alert(response.authResponse.userID);
alert(response.authResponse.accessToken);
var Token = response.authResponse.accessToken;
alert(Token);
$.ajax({
type: "POST",
url: "/HelloController/getAccessToken",
data: Token,
success: function (result) {
alert("Token");
},
error: function (result) {
alert("oops");
}
});
document.getElementById('loginBtn').style.
display = 'none';
getUserData();
}}, {perms:'manage_pages',
scope: 'email,public_profile', return_scopes: true});
};
我得到的错误如下:
WARN 25660 --- [nio-8080-exec-9]
o.s.web.servlet.PageNotFound :
Request method 'POST' not supported
欣赏回应。
答案 0 :(得分:2)
问题可能是您正在使用新版本的JQuery,它将请求数据作为后期表单数据而不是JSON发送为默认值。尝试将您的ajax调用更改为以下内容。您的控制器无法识别表单数据,因此如果是这种情况,您应该看到404。
created_at
供参考,请参阅此帖:Send JSON data via POST (ajax) and receive json response from Controller (MVC)