Php 在多个页面上的facebook iframe应用程序中重定向
我的iframe facebook应用程序有一个小问题。我想在很多fb页面上使用该应用程序(因此我不知道fb页面的确切URL)。但在应用程序请求权限后,重定向存在问题。它将用户重定向到我的画布URL,而不是fb页面,这是错误的!如何解决这个问题?不要对扇形页面或选项卡使用重定向方法,只需在java脚本中调用以下方法即可获得权限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',
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之前版本的内容是非常危险的。