2012-05-30 2 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

Вы можете передавать данные только в iframe на вкладке, используя параметр app_data в URL-адресе. Вам придется перенаправить неудачные попытки входа в URL, как:

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' –

Смежные вопросы