Получение атрибутов из GMail - Аутентификация OpenID - PullRequest
1 голос
/ 16 ноября 2010

Я использую LightOpenID и пытаюсь получить атрибуты для этой аутентификации Gmail, но она не возвращает ничего в моем личном аккаунте, и я не получаю ошибок. Я очень плохо знаком с OpenID и надеялся, что кто-нибудь может мне помочь, кто делал это раньше.

Я указываю поля на validate() и возвращаю их с process()

Я использую OpenID URL: https://www.google.com/accounts/o8/id

<code>    public function show () {
        if ($this->site->tru->post->isRequest() || !$this->site->tru->get->isEmpty('openid_mode')) {
            require_once $this->site->tru->config->get('root.path').'/lib/php/openid.php';
            $this->lightOpenId = new LightOpenID;
            if ($this->validate() || $this->lightOpenId->validate()) {
                $this->process();
            }
        }

        $this->site->addCss('account/login.css');

        $this->site->addJs('account/login.js');

        echo $this->site->tru->display->getTemplate('/site/account/login.tpl');
    }

    public function process () {
        if ($this->lightOpenId->validate()) {
            echo '<pre>'.print_r($this->lightOpenId).'
'.print_r($this->lightOpenId->getAttributes()).'
'; } } публичная функция validate () { if (! $ this-> site-> tru-> post-> isEmpty ('openid_url')) { $ this-> lightOpenId-> identity = $ this-> site-> tru-> post-> get ('openid_url'); $ this-> lightOpenId-> необязательный = массив ('contact / email', 'namePerson', 'contact / postalCode / home', 'contact / country / home'); header ('Location:'. $ this-> lightOpenId-> authUrl ()); } счетчик возвратов ($ this-> error) == 0; }

Ответы [ 2 ]

2 голосов
/ 10 февраля 2011
$openid->identity = 'https://www.google.com/accounts/o8/';

// use the following line to obtain the required details. These are the only details that google mail provides. This is for lightopenid.
$openid->required = array('namePerson/friendly', 'contact/email' , 'contact/country/home', 'namePerson/first', 'pref/language', 'namePerson/last'); 

header('Location: ' . $openid->authUrl());
1 голос
/ 17 ноября 2010

Google отвечает только на обязательные параметры, полностью игнорируя необязательные.

Кроме того, он может возвращать только следующие атрибуты:

contact/country/home
contact/email
namePerson/first
namePerson/last
pref/language

Так что namePerson и contact/postalCode/home не будут работать.

Приведенная выше информация относится только к Google и совершенно не связана с самим LightOpenID.

Что касается библиотеки, я бы посоветовал не вызывать $ lightOpenId-> validate () дважды. Каждый раз, когда вы вызываете его, он отправляет запрос поставщику, который может отклонить второй запрос.

...