Как попросить LightOpenId получить электронную почту пользователей в режиме checkid_immediate? - PullRequest
0 голосов
/ 15 января 2012

Предпосылки:

  • Я использую php LightOpenId для аутентификации пользователей через его учетную запись Google.
  • Я использую стандартный пример (example.php) с веб-сайта.Ничего фантастического.
  • Добавление одной или двух строк для изменения поведения.
  • Все мои клиенты являются Googlers.

Requirement1

Я не хочу, чтобы мой клиентвойти дважды (поведение единого входа), поэтому я добавляю $openid->mode=checkid_immediate перед вызовом header...$openid->authUrl().

У меня возникают 2 проблемы:

  1. Я не могу получить электронное письмо,lang ... attribute.

    Фактически, используя режим checkid_immediate и следуя authUrl(), я правильно подключаю своего пользователя, как и ожидалось.

    НО Изменение кодаи добавление $openid->required для сбора атрибутов до запроса authUrl() заставляет мой вызов преобразоваться в вызов режима checkid_setup.

    Как я могу в одном вызове сохранить checkid_immediateрежим и получить мои атрибуты?

  2. subdomain.mydomain2.com код не ведет себя как www.mydomain1.com www.mydomain1.com отлично работает с checkid_immediate.subdomain.mydomain2.com с тем же кодом преобразуется в вызов checkid_setup.

    Как сохранить режим checkid_immediate с субдоменом, отличным от www?

    Проблема № 2 решена сама собой !!!после очистки кеша и перезапуска Google Chrome

Заранее спасибо.

1 Ответ

1 голос
/ 03 февраля 2012

Начиная с 0.5 метод authUrl имеет необязательный параметр bool для немедленной проверки.Попробуйте:

if (!$openid->mode && !empty($storedIdentity)) {
  $openid->identity = $storedIdentity;
  $openid->required = array('contact/email', 'pref/language');
  header('Location: ' . $openid->authUrl(true));
}

* Пример отредактированного кода для включения запрошенных атрибутов вопроса.Предполагается, что $ StoreIdentity является URL-адресом, возвращенным из checkid_setup ранее.

...