页面TAB中的PHP Oauth

时间:2012-05-30 09:46:30

标签: oauth tabs facebook-php-sdk

我的标签需要知道用户成为粉丝的日期,所以我要求获得权限。尽管有facebook官方文档,但我已成功完成并且用户被重定向到oauth对话框,并在确认之后返回选项卡。

$user = $facebook->getUser();
if ($user)
{
    $access_token = $facebook->getAccessToken();
    $user_profile = $facebook->api('/me');
    try
    {
        $likes = $facebook->api("/me/likes/pageid");
    }
    catch (FacebookApiException $e)
    {
        $user = null;
    }
}
else
{
    ?>
    <script type="text/javascript">
        var oauth_url = 'https://www.facebook.com/dialog/oauth/';
        oauth_url += '?client_id=<?=$app_id?>';
        oauth_url += '&redirect_uri=' + encodeURIComponent('https://www.facebook.com/<?=$pageid?>?sk=app_<?=$app_id?>');
        oauth_url += '&scope='
        window.top.location = oauth_url;
    </script>
    <?
    die();
}

一切正常,但是如果用户不接受对话框,我无法解析错误响应。 返回的网址是:

https://www.facebook.com/page?sk=app_appid&error_reason=user_denied&error=access_denied&error_description=The+user+denied+your+request.#_=_

但是iframe里面的标签没有任何参数。

我该怎么办?

1 个答案:

答案 0 :(得分:0)

您只能使用网址中的app_data参数将数据传递到标签上的iframe。您必须将不成功的登录尝试重定向到以下URL:

https://www.facebook.com/{your_page}?v=app_{app_id}&app_data={your_string}

E.g。 https://www.facebook.com/{your_page}?v=app_{app_id}&app_data=login_failed

login_failed仍会出现在已解码的signed_request