Теперь, как мне пройти аутентификацию в PHP SDK 3.0.0?

Поэтому Facebook изменил процесс аутентификации. Еще раз. Пример в SDK PHP:

$user = $facebook->getUser(); if ($user) { try { $user_profile = $facebook->api('/me'); } catch (FacebookApiException $e) { error_log($e); $user = null; } } 

Однако теперь, как мы аутентифицируем пользователей, которые еще не прошли аутентификацию? Мы просто создаем оператор else и вызываем результат $facebook->getLoginUrl() ?

Кроме того, приведенный выше пример дает мне ошибку, поскольку вызов $facebook->getUser() возвращает мой идентификатор пользователя, но тогда мое приложение падает, когда пытается вызвать $facebook->api('/me') давая ошибку:

Fatal error: Uncaught OAuthException: токен активного доступа должен использоваться для запроса информации о текущем пользователе. брошен в /home/woohoobi/public_html/facebookv2/inc/facebook.php в строке 560

Любая помощь в том, как аутентифицировать пользователя, не прошедшего проверку подлинности, будет отличной.

Related of "Теперь, как мне пройти аутентификацию в PHP SDK 3.0.0?"

Когда вы это сделаете

 $user = $facebook->getUser(); 

с $user not null не означает, что у вас есть действительный токен доступа для выполнения некоторых вызовов API. Это просто означает, что пользователь вошел в систему.

Чтобы проверить, есть ли у вас токен доступа, один из способов – попытаться сделать вызов API, как код, который вы написали в своем вопросе:

 require "facebook.php"; $facebook = new Facebook(array( 'appId' => YOUR_APP_ID, 'secret' => YOUR_APP_SECRET, )); $user = $facebook->getUser(); if ($user) { // The user is logged in try { $user_profile = $facebook->api('/me'); // Here : API call succeeded, you have a valid access token } catch (FacebookApiException $e) { // Here : API call failed, you don't have a valid access token // you have to send him to $facebook->getLoginUrl() $user = null; } } // else : the user is not logged in 

Таким образом, у вас есть 2 случая, когда вам нужно отправить своего пользователя в $facebook->getLoginUrl() и в обоих случаях мы сделали $user == null . Поэтому нам просто нужно добавить:

 <?php if ($user): ?> <a href="<?php echo $facebook->getLogoutUrl() ?>">Logout of Facebook</a> <?php else: ?> <a href="<?php echo $facebook->getLoginUrl() ?>">Login with Facebook</a> <?php endif ?> 

Для полного потока вы можете увидеть пример PHP PHP SDK, который хорошо документирован.

Надеюсь, это поможет.

Это помогло мне … много! Итак, пользователю просто нужно сначала принять ваше приложение, чтобы использовать userdata.

 <body> <?php if (!$user_id) echo("<script> top.location.href='" . $facebook->getLoginUrl() . "'</script>"); ?> 

У меня была такая же проблема с вызовом getUser (), возвращающим 0. Однажды он работал, а следующий – нет. Я не понял, что PHP SDK предназначен для использования в сочетании с JS SDK. Вы должны следовать этим инструкциям: https://developers.facebook.com/docs/reference/javascript/ – включить конфигурацию после, и вы должны быть отсортированы.