Во-первых, я просто хочу сказать, какую информацию мне нужно получить от пользователя.
Чтобы получить всю эту информацию, я пошел и загрузил / установил здесь библиотеку PHP-Client.
Поскольку это мой первый раз, используя 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. Как получить эту информацию и что я делаю неправильно в моем примере выше?
Я фактически создал чат-комнату, посвященную всем вещам API Google ( перейдите сюда )
Это также приводит меня к другому моменту. Почему документация sooo устарела и не позаботилась. Большинство примеров, которые я вижу, два года назад, но я использую то, что было обновлено пару месяцев назад.
Использование новой версии библиотеки PHP (в настоящее время 1.0.4-бета на 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 » и использовать метод списка каналов # с параметром «мой», установленным в true. Класс в PHP lib – это «Google_Service_YouTube».
Я ударил аналогичную проблему и решил ее с помощью версии 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;
Однако местоположение не возвращается. В новых учетных записях YouTube нет пользовательских имен пользователей YouTube