登录后重新验证Facebook用户

问题描述:

鉴于Facebook用户已在您的Facebook应用程序中的某个位置登录(使用fb.login)并且该用户已保存在数据库中。在accesstoken过期后(fb.api('/ me')失败),您如何让用户再次对您的应用程序进行身份验证?登录后重新验证Facebook用户

签名的请求包含用户标识,但是如何从那里登录用户?

我正在使用PHP sdk,并且在开始时基本检查FB.api('/ me'),直接指向欢迎页面或用户页面。但FB在某些情况下通常会返回错误,通常在一天或两天之后。所以我开始认为这是因为Accesstoken已经过期。我不知道如何重新进行身份验证,我只知道用户标识仍驻留在已签名的请求中。

使用JavaScript SDK,以提示用户通过Facebook登录:

https://developers.facebook.com/docs/reference/javascript/FB.login/

或者,你可以在server-side auth尝试存储被Facebook返回的代码,并使用它,当用户请求一个新的令牌回报。

+0

我正在寻找一个自动化的问题,在后台serverside。再次显示一个弹出窗口(即使它autoclses)不是非常用户友好。另外javascript重定向是讨厌的(加载index.html,然后弹出,然后重定向到welcome.html) – Jareish 2012-04-03 10:52:17

+0

https://developers.facebook.com/docs/reference/javascript/FB.getLoginStatus/可能更适用于决定是否或者不显示登录按钮 – Igy 2012-04-03 11:36:56

+0

他向PHP Facebook SDK寻求帮助。只是声明“使用Javascript SDK”并不真正有帮助。 – Gidogeek 2012-04-03 11:57:59

认沽按照你的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.'); 
     } 
    }); 

    } 

},真);

+0

同样,我无法使用JavaScript sdk进行预认证。要求用户在应用程序的最后使用javascript sdk进行身份验证。当他几天后返回时,我需要检查php sdk,否则第一次看到该应用程序的用户会立即提示弹出窗口。这非常不友好的用户,你将失去转换。 所以再次,你如何登录用户,有一个signed_request WITHOUT JavaScript SDK。它需要是服务器端和不规则的(用户没有注意到,因为他已经给了权限) – Jareish 2012-04-03 13:50:58