1

Ich möchte Benutzer auf die oauth Seite umleiten, wenn sie irgendwelche der Berechtigungen entfernt haben, die meine App benötigt.Facebook oauth Javascript Weiterleitung in Endlosschleife

Aus irgendeinem Grund führt der folgende Code zu einer Endlosschleife, wenn ich versuche, von der Callback-Funktion FB.api umzuleiten. Irgendwelche Ideen, wie ich das beheben kann?

var perms   = ['publish_actions', 'email', 'user_birthday', 'user_location'], 
    permsString  = perms.join(','), 
    permissionsUrl = 'https://www.facebook.com/dialog/oauth'; 
    permissionsUrl += '?client_id=' + config.facebook.appId; 
    permissionsUrl += '&redirect_uri=' + encodeURI(canvasUrl); 
    permissionsUrl += '&scope=' + permsString; 

    FB.getLoginStatus(function (response) { 

     if (response.status === 'connected') { 

      FB.api('/me/permissions', function(response) { 

       // using underscore here... 
       var keys = _.keys(response.data[0]), 
        diff = _.difference(perms, keys); 

       // send the user through the auth again if they've removed any of the perms we need 
       if (diff.length) { 

        window.location.href = permissionsUrl; // results in an endless redirect loop 
        // window.location.href = 'http://randomwebsite.com'; // does redirect successfully!!!! 
       } 
      }); 
     } 

    }, true); 
+0

durch Versuch und Irrtum fand ich, dass die Umleitung in einer benannten Funktion Einwickeln der Rückruf außerhalb und dann dies im Callback aufrufen schien den Trick zu tun – techjacker

+0

@techijacker Ich habe ähnliche Probleme .. Können Sie einige Beispiele geben, wie Sie diese Situation überwinden? –

Antwort

0

Es ist schon eine Weile her, seit ich das, aber ich löste es mit so etwas wie dies aus dem Gedächtnis hat:

var redirectMe = function (link) { 
    window.location.href = link; 
}; 

FB.getLoginStatus(function (response) { 
    if (response.status === 'connected') { 
     FB.api('/me/permissions', function(response) { 
      if (true) { 
       redirectMe('http://www.browsehappy.com'); 
      } 
     }); 
    } 
}, true);