这是我通过谷歌和显示基本内容来验证用户身份的代码。
使用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();
}
答案 0 :(得分:0)
您必须在致电setAccessToken($token)
和$plus->people->get('me')
之前调用函数$user = $oauth2->userinfo->get()
。