1

自分のアプリケーションに必要な権限が削除されている場合、ユーザーをoauthページにリダイレクトしたいと考えています。Facebookのoauth Javascriptのリダイレクトが無限ループに終わる

FB.apiコールバック関数からリダイレクトしようとすると、何らかの理由で以下のコードが無限ループになります。どのように私はこれを修正することができる任意のアイデア?

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

コールバックでこれを呼び出すことは、トリックをするように見えた – techjacker

+0

@techijacker私は同様の問題を抱えています。あなたはこの状況をどのように克服するかについていくつかの例を挙げることができますか? –

答えて

0

それは、私がこれをしなかったので、しばらくしてますが、メモリから、私はこのようなもので、それを解決しています:私は、コールバックの外という名前の関数にリダイレクトを包むことがわかっ試行錯誤

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); 
関連する問題