【问题标题】:How to force a user to grant extended permissions on a page tab app?如何强制用户在页面选项卡应用程序上授予扩展权限?
【发布时间】:2012-09-12 12:04:14
【问题描述】:

我正在制作一个页面标签应用程序,该应用程序需要某些用户扩展权限才能按我的意愿运行。

我同时使用 PHP 和 JavaScript SDK,我尝试的第一件事是一个简单的FB.login(),列出了范围,包括扩展权限。问题是即使他拒绝扩展权限,用户也可以成功登录并进入我的应用程序。在此之后,我将用户重定向回登录页面以再次请求权限,但从这里开始,每次调用 FB.login() 都会使弹出窗口出现然后立即消失,让用户进入我检查权限的脚本并再次将用户踢回登录页面;这意味着FB.login() 在所有强制权限都已被授予的情况下根本不会请求权限,即使没有扩展权限也是如此。

有了这个应用程序,在 facebook 之外,我可以做$facebook->getLoginUrl(),传递所需的扩展权限,并将用户重定向到外部的 facebook 登录表单。 Therem facebook 确实会尝试请求丢失的扩展权限,如果用户拒绝,他将被带回登录页面,并在此重复,直到用户最终授予权限或离开站点。这很好,这行得通。

问题是,实际上我的应用程序驻留在页面选项卡中,就像我说的那样,FB.login() 方法无论如何都不起作用,将用户重定向到 IFrame 中的 Facebook 登录表单没有' t 似乎根本不起作用(我似乎被重定向回同一页面,而没有机会在 facebook 的 IFrame 中看到 facebook.com 外部登录表单:P),我还尝试重定向整个页面(不仅仅是IFrame)与window.top.location.href = loginUrl,其中 loginUrl 具有 facebook 内页面选项卡的 url(由$facebook->getLoginUrl($params) 生成),但在这种情况下,我完全重定向到另一个 facebook 区域,但它显示关于 redirect_uri 的错误不是由应用程序拥有,这是真的,因为重定向 uri 中包含 facebook.com,只是指向我的应用程序所在的选项卡。

因此,在页面标签应用程序的情况下,我发现无法继续向用户询问所需的扩展权限。有谁知道我怎样才能得到我想要的工作?有没有办法强制FB.login() 对话框请求扩展权限,就像默认情况下不这样做一样?

【问题讨论】:

    标签: php javascript facebook facebook-javascript-sdk facebook-php-sdk


    【解决方案1】:

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

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

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

    【讨论】:

    • 我知道它们不是强制性的,但是再次提示用户是我遇到问题的地方。如果用户之前已经接受了基本权限,我无法提示用户接受扩展权限。请仔细阅读我的问题帖子。
    猜你喜欢
    • 1970-01-01
    • 2012-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-29
    • 1970-01-01
    • 2012-05-15
    相关资源
    最近更新 更多