gpt4 book ai didi

facebook - FB auth.logout 在使用 "server-side-workflow"(OAuth 2.0) 登录后被提升

转载 作者:行者123 更新时间:2023-11-30 05:23:15 24 4
gpt4 key购买 nike

注意:在我们上周末升级到 Oauth 2.0 工作流之前,我们的(网络)应用程序运行良好。

当用户“通过 facebook 连接”到我们的(网络)应用程序时,我们使用 Facebook Authentication docs 中描述的“服务器端工作流程”将他们登录到 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');
}

看起来当用户登录到 Facebook 时,他们没有登录到我们的应用程序(如果您在浏览器的第二个选项卡中打开 facebook.com 并在通过我们的应用程序登录后重新加载页面,您会看到您确实已登录到 facebook.com)。

在使用“服务器端工作流”时,OAuth 2.0 中是否需要采取额外的步骤来让用户登录我们的应用程序,而这在之前的 OAuth 版本中不是必需的?用户是否必须在连接后通过 facebook 显式登录?

如有任何帮助,我们将不胜感激。

提前致谢,杰森

PS- 通过客户端流程登录我们的应用程序(在您之前连接之后)工作正常。只有在通过服务器端工作流程连接和登录时,我们才会遇到自动注销问题。

最佳答案

对于 ajax 页面,您需要从浏览器 session 中获取 uid、access_token 和/或代码。

这是用于防止点击劫持和其他安全风险的 iframe 和 ajax 的标准。查看:https://www.rfc-editor.org/rfc/rfc6749#section-10.13


简单粗暴的例子:

<?php
// be sure to exchange YourAppId, with your app id.

if(isset([fb_YourAppId_user_id])){
$user = [fb_YourAppId_user_id];
}else { // no user, send to login flow. }

if(isset([fb_YourAppId_access_token])){
$access_token = [fb_YourAppId_access_token];
} else { // no user, send to login flow }

?>

关于facebook - FB auth.logout 在使用 "server-side-workflow"(OAuth 2.0) 登录后被提升,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7637297/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com