Facebook graph api 为什么facebook javascript登录代码会导致无休止的循环?
当我运行此代码时,登录弹出窗口和控制台日志开始以无休止的循环方式运行。我不确定是否正确使用了FB.login()方法。在用户到达我的已连接应用程序的情况下,我希望提示输入权限,如果授予权限,是否会返回一个“已连接”状态,如果拒绝,我应该检查并处理该状态Facebook graph api 为什么facebook javascript登录代码会导致无休止的循环?,facebook-graph-api,facebook-javascript-sdk,Facebook Graph Api,Facebook Javascript Sdk,当我运行此代码时,登录弹出窗口和控制台日志开始以无休止的循环方式运行。我不确定是否正确使用了FB.login()方法。在用户到达我的已连接应用程序的情况下,我希望提示输入权限,如果授予权限,是否会返回一个“已连接”状态,如果拒绝,我应该检查并处理该状态 FB.Event.subscribe('auth.authResponseChange', function(response) { if (response.status === 'connected') { //if conne
FB.Event.subscribe('auth.authResponseChange', function(response) {
if (response.status === 'connected') {
//if connected open permissions dialog
FB.login(function(response) {
//if user grants permissions, make ajax call to pass signed request to php page
if(response.status === 'connected'){
$.ajax({
url : "http://xxxxxxio/bn/s_Request.php",
type : 'POST',
data: {signed_request: response.authResponse.signedRequest},
success : function (result) {
console.log(result);
},
error : function () {
alert("error parsing signed request");
}
});//closes ajax
}else{
//if authorization cancelled, redirect to home page
window.location = "http://spilot.kd.io/bn/index.php";
}//closes else
}, {scope: 'user_location,user_likes'});
testAPI();
} else if (response.status === 'not_authorized') {
// the person is logged into Facebook, but not into the app
FB.login(function(response) {
// handle the response
}, {scope: 'user_location,user_likes'});
} else {
// the person is not logged into Facebook, call the login()
FB.login(function(response) {
// handle the response
}, {scope: 'user_location,user_likes'});
}//closes else
});//closes event subscribe
var testAPI = function() {
console.log('Welcome! Fetching your information.... ');
FB.api('/me', function(response) {
console.log('Good to see you, ' + response.name + '.');
});
};
如果用户到达您的应用“已连接”,则他/她已通过您的应用授权并提供了必要的权限。请参阅本页 getLoginStatus允许您确定用户是否登录到 Facebook并已验证您的应用程序。有三种可能 用户的状态:
- 用户已登录Facebook并已验证您的应用程序(已连接)
- 用户已登录Facebook,但尚未对您的应用程序进行身份验证(未授权)
- 用户目前未登录Facebook,因此我们不知道他们是否验证了您的应用程序(未知)
FB.Event.subscribe('auth.authResponseChange'
从FB.login
如果您想提供“更多”权限,可以稍后在应用程序中发布这些权限
为了减少冗余,我们可以退出此功能
FB.login(function(response) {
// handle the response
}, {scope: 'user_location,user_likes'});
然后放进类似的地方
function login() {
FB.login(function(response) {
// handle the response
}, {scope: 'user_location,user_likes'});
}
然后你可以得到条件的最后两部分,比如
} else if (response.status === 'not_authorized') {
// not_authorized
login();
} else {
// not_logged_in
login();
}
我快速浏览了您之前的问题,您似乎已经掌握了窍门,但这是一种非常艰难的迂回黑客方式。因此,为了完全避免这种情况,让您了解全局,我建议您退后一步,全面审视您的应用程序,回到您尝试实现的主要目标上g>
听起来你是在通过AJAX向PHP SDK发送签名请求(?),而PHP SDK应该已经有一个函数库来处理这个问题。所以,退一步,返回问题的浓缩形式。否,FB.login不返回“已连接”。请将它的返回值记录到浏览器的控制台,以便您查看实际得到的结果。好的。非常感谢您提供的详细答案和提示。我仍在学习很多,因此这很有帮助。