2014-03-01 4 views
4

Во-первых, я просто хочу сказать, какую информацию мне нужно получить от пользователя.Как получить информацию о пользователе Google-PHP-Client?

  • Полное имя (First/Last)
  • Адрес электронной почты (основной счет, а не @ google-plus.com)
  • Местонахождение (Страна, Штат, город, адрес)
  • Youtube Имя пользователя

Чтобы получить всю эту информацию, я пошел и загрузил/установил библиотеку PHP-Client, расположенную here.

Поскольку это мой первый раз, используя API, я огляделся и обнаружил следующие области применения:

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

По какой-то причине, когда я запускаю это: $myData = $GoogleData->userinfo->get('me'); я получаю это:

Undefined property: Google_Service_Plus::$userinfo in path/test.php on line 61

Не слишком уверен, что я делаю неправильно, или даже если я должен использовать Google Plus Api, чтобы получить эту информацию.

Мне нужна электронная почта Главной учетной записи (Содержит все каналы YouTube) и адрес пользователей и т. Д. Чтобы они зарегистрировались в своей учетной записи Google. Как получить эту информацию и что я делаю неправильно в моем примере выше?

Я фактически создал чат, посвященный все вещи Google API (Go here)

Это также приносит мне к другой точке. Почему документация sooo устарела и не позаботилась. Большинство примеров, которые я вижу, два года назад, но я использую то, что было обновлено пару месяцев назад.

+1

Попробуйте создать службу «Google_Service_OAuth2» вместо «Плюс», а затем попробуйте выбрать «$ service-> userinfo_v2_me» с помощью вызова '-> get()'. – ircmaxell

+0

@ircmaxell Какой объем я должен добавить Спасибо. Ill сообщит вам, если это сработает. Благодарю. –

+0

Попробуйте проверить исходный код. Это все, что я сделал (я не знаком с API): https://github.com/google/google-api-php-client/blob/master/src/Google/Service/Oauth2.php#L34 – ircmaxell

ответ

8

Используя новую версию библиотеки PHP (в настоящее время 1.0.4 бета-on GitHub):

require_once 'lib/Google/Client.php'; 
require_once 'lib/Google/Service/Plus.php'; 

$google_client = new \Google_Client; 
$google_client->setClientId(GOOGLE_CLIENT_ID); 
$google_client->setClientSecret(GOOGLE_CLIENT_SECRET); 
$google_client->setRedirectUri(GOOGLE_REDIRECT_URI); 
$google_client->setDeveloperKey(GOOGLE_DEVELOPER_KEY); 
$google_client->setAccessType = 'offline'; 

// Either call: 
//  $google_client->authenticate($auth_code); 
// with the $auth_code returned by the auth page or 
//  $google_client->setAccessToken($existing_token); 
// with a previously generated access token. 

$plus = new \Google_Service_Plus($google_client); 
$person = $plus->people->get('me'); 

print_r($person); 

Область должна быть «https://www.googleapis.com/auth/plus.login» (я тестировал только с «профилем» рамки, потому что я не У меня есть профиль Google Plus).

Чтобы получить каналы YouTube, вам необходимо добавить область «https://www.googleapis.com/auth/youtube» и использовать метод channels#list, при этом параметр «mine» установлен в true. Класс в PHP lib - это «Google_Service_YouTube».

5

я ударил аналогичную проблему и решить ее с помощью версии 1.1.4 google-api-php-client

Предполагая, что следующий код используется для перенаправления пользователя на страницу аутентификации Google:

$client = new Google_Client(); 
$client->setAuthConfigFile('/path/to/config/file/here'); 
$client->setRedirectUri('https://redirect/url/here'); 
$client->setAccessType('offline'); //optional 
$client->setScopes(['profile']); //or email 
$auth_url = $client->createAuthUrl(); 
header('Location: ' . filter_var($auth_url, FILTER_SANITIZE_URL)); 
exit(); 

Если предположить, что действительный аутентификации код возвращается в redirect_url, следующее генерирует токен из кода аутентификации, а также предоставляет основные данные профиля:

//assuming a successful authentication code is returned 
$authentication_code = 'code-returned-by-google'; 
$client = new Google_Client(); 
//.... configure $client object 
$client->authenticate($authentication_code); 
$token_data = $client->getAccessToken(); 

//get user email address 
$google_oauth =new Google_Service_Oauth2($client); 
$google_account_email = $google_oauth->userinfo->get()->email; 
//$google_ouath->userinfo->get()->familyName; 
//$google_ouath->userinfo->get()->givenName; 
//$google_ouath->userinfo->get()->name; 

Однако местоположение не возвращается.New YouTube accounts don't have YouTube specific usernames

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