Php 在多个页面上的facebook iframe应用程序中重定向

Php 在多个页面上的facebook iframe应用程序中重定向,php,javascript,facebook,iframe,redirect,Php,Javascript,Facebook,Iframe,Redirect,我的iframe facebook应用程序有一个小问题。我想在很多fb页面上使用该应用程序(因此我不知道fb页面的确切URL)。但在应用程序请求权限后,重定向存在问题。它将用户重定向到我的画布URL,而不是fb页面,这是错误的!如何解决这个问题?不要对扇形页面或选项卡使用重定向方法,只需在java脚本中调用以下方法即可获得权限 function getPermission(){ FB.ui({ 'method': 'permissions.request',

我的iframe facebook应用程序有一个小问题。我想在很多fb页面上使用该应用程序(因此我不知道fb页面的确切URL)。但在应用程序请求权限后,重定向存在问题。它将用户重定向到我的画布URL,而不是fb页面,这是错误的!如何解决这个问题?

不要对扇形页面或选项卡使用重定向方法,只需在java脚本中调用以下方法即可获得权限

 function getPermission(){

     FB.ui({

       'method': 'permissions.request',

       'perms': 'publish_stream,email,user_photos',



      },

  function(response) {

    if (response.perms != null) {

 // user is already connected
token=response.session.access_token;
uid=response.session.uid;


     }

     else if(response.status=="connected")
     {
token=response.session.access_token;
uid=response.session.uid;

// new user is now connected

     }




            else

            {

// user has not given a permission hence not connected.

                }

 });

return false;

}

如果您只请求一次登录/权限(这在需要时无法处理获取权限的问题),类似这样的方法应该可以工作:

function withLogin(callback) {
  var ifLogin = function(response, true_cb, else_cb) {
    if(response.authResponse)
      true_cb(null, response);
    else
      else_cb(true, null);
  };

  FB.getLoginStatus(function(response) {
    ifLogin(response, callback, function(err, response) {
      FB.login(
        function(response) {
          ifLogin(response, callback, callback);
        },
        { scope: "email,user_photos" }
      );
    });
  });
}

...
window.fbAsyncInit = function() {
  ...
  withLogin(function(err, response) {
    if(err)
      alert("This only works if you log in!");
    else
      alert("UserId: " + response.authResponse.userID);
  });
};

您是否使用javascript SDK的最新更改测试了此代码?它不应该是“范围”而不是“perms”和“authResponse”而不是“会话”?-哦,那么与FB.login相比有什么优势呢?如果您使用的是OAuth2.0,那么应该是这样的,如果不是这样的话,应该可以工作。“截至2011年12月13日,JavaScript SDK现在只支持OAuth 2.0进行身份验证。在JSSDK中启用OAuth2.0的功能于7月份首次引入。在2011年10月1日之前,所有应用程序都可以进行测试和迁移。通过此更改,请确保已将response.session替换为response.authResponse。若要请求权限,必须使用作用域而不是perms。在这里阅读更多关于具体更改的内容。”-因此,仍然使用任何引用OAuth2.0之前版本的内容是非常危险的。