如何处理facebook授权时,用户点击“;不要允许";


How to handle facebook authorization when user clicks "dont allow"

我正在开发一个使用iFrame的facebook选项卡应用程序。除了处理用户单击"不允许"的情况外,我在授权方面的一切都很完美。但我被卡住了。昨晚花了几个小时试图解决这些问题后,我不知道该何去何从。

我的申请流程是这样的。首先,系统会提示用户"点赞"页面以访问更多应用程序。在这一点上,如果他们点击,就像下一步被显示一样,但首先要检查应用程序是否有授权。如果没有,则在onload事件中放置一些JS,该事件将父框架重定向到授权链接,并将return_uri设置为页面应用程序选项卡的链接。如果用户单击"允许",这将非常有效。如果他们单击"不允许",那么它最终会按原样循环,反复返回授权页面。如果用户希望重新考虑他们的选择,我希望它显示一个小的解释页面,并返回到授权页面的链接。

我发现阻止我处理这个ok的问题是,应用程序位于return_uri链接回的页面(页面上的应用程序选项卡)上的iframe中。所以error和error_reason GET变量对我的代码不可用,只有父框架是facebook,不在我的控制之下。

如何将此功能添加到我的应用程序中?谢谢

我在页面选项卡上也遇到了同样的问题。我使用OAuth对话框来处理登录,但就像你说的那样,你重定向到页面url,其中有应用程序,但你无法得到错误。

我所做的是在重定向到auth对话框之前设置一个试图授权的会话变量。这样,如果我最终没有得到授权用户,我可以看到他们已经尝试过了,并显示适当的消息。类似这样的东西:

$facebook = new Facebook(array(
     'appId'=>'my_app_id',
     'secret'=>'my_secret')
);
$fb_user = $facebook->getUser();
if( $fb_user ) {
    $_SESSION['auth_check'] = 0;
    // rest of application is authorized
}
elseif( isset($_SESSION['auth_check']) && $_SESSION['auth_check'] ) {
    // we attempted to authorize before and something went wrong
    // show a message explaining they need to authorize
    $_SESSION['auth_check'] = 0; // set so they get the auth screen again
}
else {
    $_SESSION['auth_check'] = 1; // attempting to authorize
    header("Location: $fb_oauth_dialog");
}

希望能有所帮助!

相关文章: