Получение контактов Google с помощью LightOpenID?

В настоящее время я использую LightOpenID, чтобы позволить пользователям входить на мой сайт, где я могу автоматически извлекать их имя пользователя и адрес электронной почты:

$openid->required = array('namePerson/first', 'namePerson/last', 'contact/email');
$openid->identity = 'https://www.google.com/accounts/o8/id';

Здесь я использую параметры namePerson/first, namePerson/last и contact/email.

Я так понимаю, что для того, чтобы получить список контактов пользователя, я должен использовать ленту:

https://www.google.com/m8/feeds

Однако я не могу понять, какие параметры мне нужно использовать для этого?

Если я полностью удалю строку параметров, я просто верну пустой массив.

Может ли кто-нибудь помочь мне выяснить, какие параметры мне нужны, чтобы получить контакты?

Вот текущий код, который у меня есть:

<?php
    require '/var/www/libraries/openid.php';

    try {

        $openid = new LightOpenID;

        if(!$openid->mode) {

            //$openid->required = array('gd/fullName');
            $openid->identity = 'https://www.google.com/m8/feeds/contacts/oshirowanen.y%40gmail.com/full';
            header('Location: ' . $openid->authUrl());
            exit;

        } elseif($openid->mode == 'cancel') {

            echo "cancelled";
            exit;

        } else {

            if ( $openid->validate() ) {

                $returned = $openid->getAttributes();
                print_r($returned);

                exit;

            } else {

                echo "something is wrong";
                exit;

            }

        }

    } catch(ErrorException $e) {

        echo $e->getMessage();

    }
?>

person oshirowanen    schedule 24.06.2012    source источник
comment
Добавлен весь код, который у меня есть выше.   -  person oshirowanen    schedule 29.06.2012


Ответы (3)


Вы не можете сделать это с LightOpenID, потому что он реализует только протокол OpenID.

Для этого вам понадобится протокол OAuth (2.0). Согласно документации:

О протоколах авторизации

Мы рекомендуем использовать OAuth 2.0 для авторизации запросов.

Если ваше приложение имеет определенные необычные требования к авторизации, например вход в систему одновременно с запросом доступа к данным (гибрид) или делегирование полномочий на уровне домена (2LO), то в настоящее время вы не можете использовать токены OAuth 2.0. В таких случаях вместо этого вы должны использовать токены OAuth 1.0 и ключ API. Вы можете найти ключ API вашего приложения в Google API Console, в разделе Простой доступ к API на панели Доступ к API.

person Alix Axel    schedule 01.07.2012
comment
Спасибо за это, Аликс, я начал копаться в этом, но не хотел тратить слишком много времени.., мне нужно нарастить OAuth. - person quickshiftin; 02.07.2012

Согласно документации:

Получение всех контактов

Чтобы получить все контакты пользователя, отправьте авторизованный запрос GET по следующему URL-адресу:

https://www.google.com/m8/feeds/contacts/{userEmail }/полный

С соответствующим значением вместо userEmail.

Примечание. Специальное значение userEmail по умолчанию может использоваться для ссылки на аутентифицированного пользователя.

person quickshiftin    schedule 28.06.2012
comment
Я пробовал это уже с помощью LightOpenID, и я просто возвращаю пустой массив. Я включил полный код, который у меня есть в настоящее время, в исходный вопрос выше. - person oshirowanen; 29.06.2012
comment
честно, посмотрю повнимательнее - person quickshiftin; 30.06.2012
comment
Этот ответ правильный, но вопрос неправильный. Что, я думаю, делает их обоих неправильными. :П - person Alix Axel; 02.07.2012

Согласно документам это должно быть возможно: https://developers.google.com/accounts/docs/OpenID

Гибридный протокол OpenID+OAuth позволяет веб-разработчикам комбинировать запрос OpenID с запросом аутентификации OAuth. Это расширение полезно для веб-разработчиков, использующих как OpenID, так и OAuth, особенно тем, что оно упрощает процесс для пользователей, запрашивая их одобрение один раз вместо двух.

person miturbe    schedule 08.08.2012