2012-06-24 2 views
7

настоящее время я использую LightOpenID, чтобы позволить пользователям войти в мой сайт, где я могу автоматически извлекать их имя пользователя и адрес электронной почты:Получение контактов Google с помощью 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(); 

    } 
?> 
+1

Добавлен весь код, который у меня есть в настоящее время. – oshirowanen

ответ

5

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

Для этого вам понадобится протокол OAuth (2.0). Per the docs:

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

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

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

+0

Спасибо за это Аликс, я начал копаться в ней, но не хотел тратить слишком много времени. Мне нужно наращивать OAuth. – quickshiftin

0

Per the docs:

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

Для получения всех контактов пользователя, отправьте запрос авторизованного GET к следующий URL:

https://www.google.com/m8/feeds/contacts/ {us erEmail}/full

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

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

+0

Я пробовал уже использовать LightOpenID, и я просто возвращаю пустой массив. Я включил полный код, который у меня есть в исходном вопросе выше. – oshirowanen

+0

справедливо, я присмотрю его ближе. – quickshiftin

+0

Этот ответ верный, но вопрос неправильный. Который, я думаю, делает их обоих неправильными. : P –

0

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

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

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