1

我正在制作一个页面选项卡应用程序,该应用程序需要某些用户扩展权限才能按我想要的方式运行。

我同时使用 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()对话框要求扩展权限,就像默认情况下不这样做一样?

4

1 回答 1

1

Facebook 对其进行了设计,因此不再需要扩展权限。不幸的是,这意味着您不能强迫用户接受它们。

处理它的一个好方法是让用户登录到应用程序,然后通过不允许权限来提示用户他们错过了什么,并再次提示他们接受。如果他们仍然不接受,那么向他们展示一个很好的“抱歉,在你接受权限之前你不能使用这个应用程序”页面

http://developers.facebook.com/docs/guides/policy/examples_and_explanations/Extended_Permissions/ https://developers.facebook.com/docs/opengraph/authentication/

于 2012-09-12T14:51:36.447 回答