【问题标题】:facebook google oauth Uncaught exceptionfacebook google oauth 未捕获的异常
【发布时间】:2015-07-08 04:56:19
【问题描述】:

我在我的应用程序中集成了 google 和 facebook oauth。 首先,我像这样为谷歌发起了课程

$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['something else'])) > 。它工作正常。那么如何解决这个错误。任何帮助将不胜感激。

【问题讨论】:

  • 第一阶段:捕获异常。

标签: php facebook oauth google-oauth facebook-oauth


【解决方案1】:

我认为问题在于您在“身份验证”函数调用中有参数。从我在“Google_OAuth2.php”的谷歌代码中看到的,它自己调用它。您需要确保设置了变量。查看下面的代码。

还要确保您使用的是正确版本的 Google 代码...在线与已安装。我读到 Installed 版本是 Native。

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/

另外,捕获异常,这样您至少可以将其中一个或另一个作为成功的身份验证,而不是一起出错。

【讨论】:

    猜你喜欢
    • 2018-12-23
    • 2015-10-18
    • 1970-01-01
    • 2014-08-19
    • 2016-02-27
    • 1970-01-01
    • 2010-09-28
    • 2012-05-31
    相关资源
    最近更新 更多