2012-05-30 26 views
0

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

$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没有任何参数。

我该怎么办?

回答

0

只能使用URL中的app_data参数将数据传递到选项卡上的iframe。你将不得不失败的登录尝试重定向到像一个网址:

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

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

login_failed仍然会出现在解码signed_request

+0

我找不到在哪里定义不同的重定向URL,如果用户点击“取消”,而不是“去应用”。 –

+0

将“cancel_url”参数添加到您的登录代码中: 'cancel_url = https://www.facebook.com/ {your_page}?v = app_ {app_id}&app_data = login_failed' –