Intereting Posts
Добавить сообщение проверки в fieldset вместо js popup Согласование данных из файла с регулярным выражением Не удается отбросить одно значение (id) из db в массиве после нажатия кнопки отправки Как получить содержимое javascript / ajax -loaded div на сайте? почему мне нужно использовать mb_convert_encoding ($ name, 'ISO-8859-15', 'utf-8'), чтобы отобразить акцентированные символы? Простой HTML DOM str_replace в текстовом виде Вызов неопределенной функции mysql_connect? Как проверить, выполняется ли ffmpeg кодирование видео с помощью PHP? Создание и передача данных байтов в сокет в PHP на основе кода для C ++ Как передать массив из PHP в ActionScript 3 / Flash? Вызовите PHP из виртуального / пользовательского «веб-сервера» Удалите элементы одного массива, если он найден в другом PHP, strip_tags stripping \ n в текстовой области. Как это остановить? Копирование файлов cookie с первого ответа на следующий запрос Как использовать fsockopen (), чтобы открыть соединение Telnet с паролем?

Вход в Google OAuth2 – получите ник и реальный адрес электронной почты YouTube

Есть ли способ получить псевдоним пользователя youtube вместе с его адресом REAL (*@gmail.com)?

Всякий раз, когда я прошу Google аутентифицировать пользователя с областью «youtube.readonly», адрес электронной почты изменяется на « * @ pages.plusgoogle.com». Но когда я не вижу возможности YouTube, я не получаю ник YouTube …

Запросы, выполняемые клиентом API API Google ( https://github.com/google/google-api-php-client )


Примеры

1. Правый адрес электронной почты / Неверное имя:

Области применения:

https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile 

Userinfo:

 email: "********@gmail.com" //<- I need this family_name: <My last name> given_name: <My first name> name: <My full name> verified_email: true [...] 

2. Неправильный адрес электронной почты / имя:

Области применения:

 https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/youtube.readonly 

Userinfo:

 email: "<My YT nickname>-<Random(?) ID>@pages.plusgoogle.com" family_name: "." given_name: <My YT nickname> name: <My YT nickname> //<- and I need that verified_email: true [...] 

Итак: как получить электронную почту от запроса №1 и имя запроса №2 без изменения областей (что требует повторной аутентификации)?


Код

 $oauth2 = new Google_Service_Oauth2($google); if (strlen($code) > 10) { try { $accessToken = $google->authenticate($code); } catch (Google_Auth_Exception $e) { return new false; } if (!$accessToken) { return false; } $userinfo = $oauth2->userinfo->get(); var_dump($userinfo);die; } 

Дамп (с областью YT)

 object(Google_Service_Oauth2_Userinfo)[325] public 'email' => string '***@pages.plusgoogle.com' (length=36) //wrong email.. public 'family_name' => string '.' (length=1) public 'gender' => null public 'given_name' => string '***' (length=10) public 'hd' => null public 'id' => string '1013***' (length=21) public 'link' => string 'https://plus.google.com/1013***' (length=45) public 'locale' => null public 'name' => string '***' (length=10) public 'picture' => string 'https://lh5.googleusercontent.com/***/photo.jpg' (length=92) public 'timezone' => null public 'verified_email' => boolean true protected 'data' => array (size=0) empty protected 'processed' => array (size=0) empty 

Интересный случай использования. К сожалению, в данный момент нет способа сделать это с помощью одного токена. Причина в том, что канал youtube представлен другим объектом (почти как учетная запись пользователя) в системе. И грант OAuth может принадлежать либо пользователю gmail, либо каналу youtube. Когда мы увидим область youtube в запросе, мы показываем список идентификаторов пользователя и любых каналов, которые могут быть у пользователя, и одобряющий пользователь выбирает один из них. И полученный токен принадлежит этому объекту / учетной записи.

Мы создаем новые функции, связанные с делегированием и каналами. Например, одним из возможных решений может быть получение одного токена в учетной записи пользователя, который дает вам доступ к API по всем каналам, управляемым этой учетной записью. К сожалению, на данный момент нет ETA.