使用oauth 2.0 google + api 401无效凭据,抛出apiServiceException ..为什么..?

时间:2012-06-29 06:56:55

标签: php oauth-2.0 google-plus

这是我通过谷歌和显示基本内容来验证用户身份的代码。

使用Google验证用户时出错

  

错误:使用oauth 2.0 google + api的无效凭据,抛出apiServiceException

这是我的代码:

<?php
require_once 'google-api-php-client/src/apiClient.php';
require_once 'google-api-php-client/src/contrib/apiPlusService.php';
require_once 'google-api-php-client/src/contrib/apiOauth2Service.php';

session_start();

$client = new apiClient();

$client->setApplicationName('demo');
$client->setClientId('asd6354egfdgtdewd');
$client->setClientSecret('-ooRVhB5nbdsfisfgf7s6fsfsfj');
$client->setRedirectUri('http://demo.com');
$client->setDeveloperKey('HGFHJVhjb894rbbvjhdfjdsvkbdvdv');

$client->setScopes(array('https://www.googleapis.com/auth/plus.me',
                             'https://www.googleapis.com/auth/userinfo.email'));

$plus   = new apiPlusService($client);
$oauth2 = new apiOauth2Service($client);

if (isset($_REQUEST['logout']))
{
    unset($_SESSION['access_token']);
}

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

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

if ($client->getAccessToken())
{
        $me   = $plus->people->get('me');
        $user = $oauth2->userinfo->get();

            $email = filter_var($user['email'], FILTER_SANITIZE_EMAIL);

            $optParams = array('maxResults' => 100);
        $activities = $plus->activities->listActivities('me', 'public',$optParams);

        $_SESSION['access_token'] = $client->getAccessToken();

    } else {

           $authUrl = $client->createAuthUrl();

}

1 个答案:

答案 0 :(得分:0)

您必须在致电setAccessToken($token)$plus->people->get('me')之前调用函数$user = $oauth2->userinfo->get()