我正在制作一个页面选项卡应用程序,该应用程序需要某些用户扩展权限才能按我想要的方式运行。
我同时使用 PHP 和 JavaScript SDK,我尝试的第一件事是一个简单的FB.login()
,列出范围,包括扩展权限。问题是即使他拒绝扩展权限,用户也可以成功登录并进入我的应用程序。在此之后,我将用户重定向回登录页面以再次请求权限,但从这里开始,每次调用FB.login()
都会使弹出窗口出现然后立即消失,让用户进入我的脚本来检查权限并踢用户再次返回登录页面;这意味着FB.login()
如果所有强制权限都已被授予,则根本不会请求权限,即使没有扩展权限也是如此。
有了这个应用程序,在 facebook 之外,我可以$facebook->getLoginUrl()
传递所需的扩展权限,并将用户重定向到外部的 facebook 登录表单。Therem facebook 确实会尝试请求丢失的扩展权限,如果用户拒绝,他将被带回登录页面,并在此重复,直到用户最终授予权限或离开站点。这很好,这行得通。
问题是,我的应用程序实际上驻留在页面选项卡中,就像我说的那样,该FB.login()
方法不起作用,将用户重定向到 IFrame 中的 Facebook 登录表单似乎根本不起作用(我似乎被重定向回同一页面,而没有机会在 facebook 的 IFrame 中看到 facebook.com 外部登录表单:P),我还尝试使用 重定向整个页面(不仅仅是 IFrame)window.top.location.href = loginUrl
,其中loginUrl 具有 facebook 内页面选项卡的 url($facebook->getLoginUrl($params)
由重定向 uri 里面有 facebook.com,只是指向我的应用所在的标签。
因此,在页面选项卡应用程序的情况下,我发现无法继续向用户询问所需的扩展权限。有谁知道我怎样才能得到我想要的工作?有没有办法强制FB.login()
对话框要求扩展权限,就像默认情况下不这样做一样?