假设一个Facebook用户在某个时候登录了你的Facebook应用程序(使用fb.login),并且该用户已保存在数据库中。在accesstoken过期后(fb.api('/me')失败),如何让用户再次使用您的应用程序进行身份验证。
已签名的请求包含用户id,但如何从那里登录用户?
我使用的是PHP-sdk,基本上一开始就用FB.api('/me')进行检查,以直接指向欢迎页面或用户页面。但FB在某些情况下返回false,通常在一两天后。所以我开始认为这是因为访问令牌已经过期。我不知道如何重新验证,我只知道用户id仍然存在于签名的请求中。
在javascript中放入以下代码。。。如果用户未登录,它将打开登录弹出窗口
FB.getLoginStatus(函数(响应){
if (response.authResponse) {
fbUserId = response.authResponse.userID;
token = response.authResponse.accessToken;
} else {
FB.login(function(response) {
if (response.authResponse) {
fbUserId = response.authResponse.userID;
token = response.authResponse.accessToken;
}
else {
console.log('User cancelled login or did not fully authorize.');
}
});
}
},true);
使用Javascript SDK提示用户通过Facebook:登录
https://developers.facebook.com/docs/reference/javascript/FB.login/
或者,您可以尝试在服务器端身份验证期间存储Facebook返回的代码,并在用户返回时使用它来请求新的令牌。