Facebook Google OAUT Uncaught исключения

Я интегрировал Google и Facebook OAUT в моем приложении. Сначала я инициировал класс для Google, как это

$client = new Google_Client();
$client->setApplicationName("urmk google login");         
$oauth2 = new Google_Oauth2Service($client);
if (isset($_GET['code'])) {
  $client->authenticate($_GET['code']);
  $_SESSION['token'] = $client->getAccessToken();
  $redirect = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'];
  header('Location: ' . filter_var($redirect, FILTER_SANITIZE_URL));
  return;
}  

Процесс входа в Google работает нормально, и я тоже могу получить информацию о пользователе. Но тогда я интегрировал Facebook oauth

          FacebookSession::setDefaultApplication('APP_ID', 'APP_SECRET');
          $helper = new FacebookRedirectLoginHelper('http://example.com/');
          $loginUrl = $helper->getLoginUrl();
          try {
            $session = $helper->getSessionFromRedirect();
          } catch(FacebookRequestException $ex) {
            // When Facebook returns an error
          } catch(\Exception $ex) {
            // When validation fails or other local issues
          }
          if ($session) {
            // Logged in
            $user = $facebook->getUser();
            if ($user) {
              try {
                  $user_profile = $facebook->api('/me');
              } catch (FacebookApiException $e) {
                  error_log($e);
                  $user = null;
              }
          }

            if ($user) {
              $logoutUrl = $facebook->getLogoutUrl();
            } else {
              $loginUrl = $facebook->getLoginUrl();
            }

          }

Он успешно переводит меня в учетную запись пользователя, где он запрашивает разрешение пользователя, но при перенаправлении на мой САЙТ выдает ошибку, говорящую

 Fatal error: Uncaught exception 'Google_AuthException' with message 
  'Error fetching OAuth2 access token, message: 'invalid_grant'' in
  C:\xampp\htdocs\urmk\lib\src\auth\Google_OAuth2.php:113 Stack trace:
  #0 C:\xampp\htdocs\urmk\lib\src\Google_Client.php(131): 
  Google_OAuth2->authenticate(Array, 'AQASSzhhLhYIYxI...') #1 
  C:\xampp\htdocs\urmk\index.php(66):   
  Google_Client->authenticate('AQASSzhhLhYIYxI...') #2 {main} thrown in 
  C:\xampp\htdocs\urmk\lib\src\auth\Google_OAuth2.php on line 113**

И снова, если я изменяю if (isset($_GET['code'])) на if (isset ($ _ GET ['что-то еще'])). Работает нормально. Итак, как решить эту ошибку. Любая помощь будет оценена.

1 ответ

Я считаю, что проблема в том, что у вас есть параметры в вызове функции authenticate. Из того, что я видел в коде Google для Google_OAuth2.php, он сам себя называет. Вам нужно убедиться, что вы установили переменные. Проверьте код ниже.

Также убедитесь, что вы используете правильную версию кода Google... Online или Installed. Я прочитал, что установленная версия является родной.

if(isset($_GET['code']))
{
    $client->authenticate();
    $_SESSION['access_token'] = $client->getAccessToken();
    header('Location: http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']);
}

Вы можете установить токен доступа с помощью...

if(isset($_SESSION['access_token']))
{
    $client->setAccessToken($_SESSION['access_token']);
}

Если ничего не помогает, прочитайте этот документ... http://25labs.com/tutorial-implementing-google-api-using-oauth-2-0-in-php/

Кроме того, перехватите исключение, чтобы вы могли, по крайней мере, получить одну или другую в качестве успешной аутентификации, а не делать ошибки все вместе.

Другие вопросы по тегам