注意:我们的(网络)应用程序运行正常,直到我们在上周末升级到Oauth 2.0工作流程.
当用户"与Facebook连接"到我们的(网络)应用程序时,我们使用Facebook身份验证文档中描述的"服务器端工作流程"将其登录到Facebook .但是,当用户访问包含以下javascript代码的应用程序中的主页时,Facebook正在提升auth.logout事件:
window.fbAsyncInit = function() {
FB.init({appId: 'XXX', status: true, cookie: true, xfbml: true, channelUrl: 'http://XXX/fbchannel.html', oauth: true});
FB.Event.subscribe('auth.logout', function(response) {
logout();
});
};
(function() {
var e = document.createElement('script');
e.type = 'text/javascript';
e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js';
e.async = true;
document.getElementById('fb-root').appendChild(e);
}());
function logout(){
new Ajax.Request('http://XXX/logout');
}
Run Code Online (Sandbox Code Playgroud)
看来,当用户登录Facebook时,他们没有登录我们的应用程序(如果您在浏览器的第二个选项卡中打开facebook.com并在我们的应用程序登录后重新加载页面,您将看到你确实登录了facebook.com).
在使用OAuth早期版本中不需要的"服务器端工作流"时,是否需要在OAuth 2.0中执行额外步骤以将用户登录到我们的应用程序中?用户在连接后是否必须通过facebook明确登录?
任何帮助将非常感激.
杰森先生,谢谢你
PS-通过客户端流程(在您之前连接之后)登录我们的应用程序工作正常.只有在通过服务器端工作流程连接和登录时,我们才会遇到自动注销问题.