Перенаправить обратно на вкладку после аутентификации пользователя - PullRequest
3 голосов
/ 17 ноября 2011

Как мне перенаправить пользователя обратно на вкладку моей страницы после проверки подлинности моего приложения? Я не могу вставить один конкретный URL для перенаправления, так как мое приложение будет жить на нескольких страницах. Так или иначе, мне нужно захватить идентификатор страницы и поместить его в URL. Я пытался использовать переменные сеанса, но это, похоже, не работает для меня. Вот часть моего кода ...

$signed_request = $facebook->getSignedRequest();

$_SESSION['TrueID'] = $signed_request['page']['id']; 

$fbconfig['appBaseUrl'] = "http://www.facebook.com/pages/".$_SESSION['TrueID']."/".$_SESSION['TrueID']."?sk=app_241321439259320";

/* 
 * If user first time authenticated the application facebook
 * redirects user to baseUrl, so I checked if any code passed
 * then redirect him to the application url 
 * -mahmud
 */
if (isset($_GET['code'])){
    header("Location: " . $fbconfig['appBaseUrl']);
    exit;
}
//~~

//
if (isset($_GET['request_ids'])){
    //user comes from invitation
    //track them if you need
}

Как вы можете видеть, я пытаюсь установить переменную сеанса для получения идентификатора страницы ... но это не работает для меня :( Переменная эхо просто отлично, когда я захожу на мою страницу ... но я предполагаю, заблудиться где-то во время аутентификации.

Ответы [ 2 ]

3 голосов
/ 17 ноября 2011

Поэтому, когда страница добавляет / устанавливает ваше приложение, вы должны хранить link страницы вместе с id страницы.

Теперь, когда вкладка вашей страницы загружена, Facebook отправит параметр page, который будет содержать страницу id (наряду с другой информацией см. Документацию ). Вы извлекаете этот идентификатор, получаете ссылку на страницу из вашей базы данных и создаете ссылку на вкладку страницы, которая будет выглядеть примерно так (где $page - это запись базы данных страницы):

$redirect_uri = $page['page_link'] . '?sk=app_' . $APP_ID

Поскольку вы используете PHP-SDK, вот как вы создаете свой логин:

$user = $facebook->getUser();
if(!$user) {
    $url = $facebook->getLoginUrl(array('redirect_uri' => $redirect_uri, 'scope' => 'read_stream'));
    echo "<script>top.location.href = '$url';</script>";
    exit;
}

Конечно, вы, возможно, не захотите перенаправлять на логин напрямую, а вместо этого получите ссылку на призыв к действию:

<a href="<?php echo $url;?>" target="_top">Connect</a>
2 голосов
/ 03 ноября 2012

Лучший способ, который я нашел, это установить URL-адрес сайта в настройках приложения на http://www.facebook.com/pages/

Затем сделать что-то подобное (проверено):

$uid = '';

$facebook = new Facebook(array(
        'appId'  =>'xxxxxxxxxxxxxxx',
        'secret' =>'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
        'cookie' => true,
    'oauth'  => true,
        ));

$uid = $facebook->getUser();

$signedrequest = $facebook->getSignedRequest();

$page_id = $signedrequest["page"]["id"]; 

$fb_access_token = $signedrequest["oauth_token"];

if($uid==''){
echo '<div id="authenticate"><a href="https://www.facebook.com/dialog/oauth/?client_id=APP_CLIENT_ID_HERE&redirect_uri=http://www.facebook.com/pages/'. $page_id .'/'.$page_id.'%3Fsk%3Dapp_APP_CLIENT_ID_HERE&response_type=token" target="_top">Authorize App</a></div>';

Это может быть немногонемного взломать, но это хорошо работает для моей ситуации :) Надеюсь, это кому-то поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...