2010-11-16 5 views
1

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

Я с указанием полей на validate() и возвращение их с process()

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

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()).'</pre>'; 
     } 
    } 

    public function validate() { 
     if (!$this->site->tru->post->isEmpty('openid_url')) { 
      $this->lightOpenId->identity = $this->site->tru->post->get('openid_url'); 
      $this->lightOpenId->optional = array('contact/email', 'namePerson', 'contact/postalCode/home', 'contact/country/home'); 

      header('Location: '.$this->lightOpenId->authUrl()); 
     } 

     return count($this->error) == 0; 
    } 

ответ

1

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

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

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

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

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

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

+0

А ... Я вижу. Благодаря! – Webnet

+0

Собственно, 'contact/country/home' не работает ... – Webnet

+0

@Webnet: Действительно, кажется, что он не работает. Моя информация была основана на странице [Google Federated Login] (http://code.google.com/apis/accounts/docs/OpenID.html), поэтому я предположил, что информация будет правильной. – Mewp

2
$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()); 

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

  • Нет связанных вопросов^_^