2013-04-30 6 views
2
<?php 
/* 
* Copyright 2011 Google Inc. 
* 
* Licensed under the Apache License, Version 2.0 (the "License"); 
* you may not use this file except in compliance with the License. 
* You may obtain a copy of the License at 
* 
*  http://www.apache.org/licenses/LICENSE-2.0 
* 
* Unless required by applicable law or agreed to in writing, software 
* distributed under the License is distributed on an "AS IS" BASIS, 
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
* See the License for the specific language governing permissions and 
* limitations under the License. 
*/ 
require_once '/google-api-php-client/src/Google_Client.php'; 
require_once '/google-api-php-client/src/contrib/Google_PlusService.php'; 

session_start(); 

$client = new Google_Client(); 
$client->setApplicationName("Google+ PHP Starter Application"); 
// Visit https://code.google.com/apis/console to generate your 
// oauth2_client_id, oauth2_client_secret, and to register your oauth2_redirect_uri. 
$client->setClientId(''); 
$client->setClientSecret(''); 
$client->setRedirectUri(''); 
$client->setDeveloperKey(''); 

$plus = new Google_PlusService($client); 

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

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

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

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

    // These fields are currently filtered through the PHP sanitize filters. 
    // See http://www.php.net/manual/en/filter.filters.sanitize.php 


    $url = filter_var($me['url'], FILTER_VALIDATE_URL); 

    $img = filter_var($me['image']['url'], FILTER_VALIDATE_URL); 

    $name = filter_var($me['displayName'], FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_HIGH); 

    $personMarkup = "<a rel='me' href='$url'>$name</a><div><img src='$img'></div>"; 

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

    $activityMarkup = ''; 
    foreach($activities['items'] as $activity) { 
    // These fields are currently filtered through the PHP sanitize filters. 
    // See http://www.php.net/manual/en/filter.filters.sanitize.php 
    $url = filter_var($activity['url'], FILTER_VALIDATE_URL); 
    $title = filter_var($activity['title'], FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_HIGH); 
    $content = filter_var($activity['object']['content'], FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_HIGH); 
    var_dump($content); 
    exit; 
    $activityMarkup .= "<div class='activity'><a href='$url'>$title</a><div>$content</div></div>"; 
    } 


    // The access token may have been updated lazily. 
    $_SESSION['access_token'] = $client->getAccessToken(); 
} else { 
    $authUrl = $client->createAuthUrl(); 
} 
?> 
<!doctype html> 
<html> 
<head> 
    <meta charset="utf-8"> 
    <link rel='stylesheet' href='style.css' /> 
</head> 
<body> 
<header><h1>Google+ Sample App</h1></header> 
<div class="box"> 

<?php if(isset($personMarkup)): ?> 
<div class="me"><?php print $personMarkup ?></div> 
<?php endif ?> 

<?php if(isset($activityMarkup)): ?> 
<div class="activities">Your Activities: <?php print $activityMarkup ?></div> 
<?php endif ?> 

<?php 
    if(isset($authUrl)) { 
    print "<a class='login' href='$authUrl'>Connect Me!</a>"; 
    } else { 
    print "<a class='logout' href='?logout'>Logout</a>"; 
    } 
?> 
</div> 
</body> 
</html> 

Я не могу получить идентификатор электронной почты пользователя или день рождения. Пожалуйста, дайте предложения, чтобы получить идентификатор электронной почты пользователя и день рождения.Как получить адрес электронной почты и день рождения в Google +

+0

Какая ошибка вы получаете? – Slim

+0

, когда я добавляю строку $ birth = filter_var ($ me ['birthday'], FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_HIGH); в коде я получил ошибку. Уведомление: неопределенный индекс: день рождения в E: \ wamp \ www \ google \ code.php в строке 56 – user2330998

ответ

1

В вашем примере есть несколько недостающих сведений, которые могут повлиять на результаты, которые вы получаете. Вы можете начать с приложения быстрого запуска по адресу https://github.com/googleplus/gplus-quickstart-php и сосредоточиться на настройке кнопки входа в index.html и конфигурации oauth в signin.php.

В частности, вам необходимо убедиться, что вы запрашиваете области oauth, которые вам нужны на странице index.html. Вы не указали эту часть в своем примере выше, но чтобы получить информацию о рождении (при условии, что пользователь установил ее), вам необходимо запросить область https://www.googleapis.com/auth/plus.login и получить доступ к их адресу электронной почты, который вам нужно будет запросить доступ к https://www.googleapis.com/auth/userinfo.email, а затем запросить информацию с конечной точки «tokeninfo». См. https://developers.google.com/+/api/oauth для получения дополнительной информации.

Образец кода, который вы показываете, также показывает activity.get, а не метод people.get. Вы можете отправить код, который иллюстрирует точную проблему. В этом случае, однако, имейте в виду, что если человек не делает свой день рождения открытым, вам не будет предоставлен доступ к этому полю.

+0

эй. В данном коде можно использовать $ client-> setScopes ('https: // www .googleapis.com/auth/plus.login https://www.googleapis.com/auth/userinfo.email '); – user2330998

+0

Мне пришлось просматривать исходники, так как я не знаком с библиотекой PHP, но похоже, что вы также можете указать области этого пути, да. Я больше привык к тому, что у меня есть страница входа в систему и с помощью кнопки входа вы можете выполнить начальную проверку подлинности/авторизацию (с URL-адресом, на который я указал с помощью быстрого запуска). – Prisoner

+0

Да, мы можем setScopes, но проблема в том, когда пытается добавить $ email = filter_var ($ me ['email'], FILTER_SANITIZE_EMAIL); в приведенном выше коде дана ошибка. Уведомление: Неопределенный индекс: электронная почта в E: \ wamp \ www \ google \ code.php в строке 56 – user2330998

Смежные вопросы