Есть ли лучший способ получить информацию OpenID от поставщика? - PullRequest
8 голосов
/ 22 сентября 2010

Я новичок в логике OpenID.Я использую компонент OpenID для CakePHP от Cakebaker, с библиотекой PHP OpenID от JanRain.

Все это работает довольно хорошо, но я не смог найти исчерпывающий способ получения информации о пользователях в зависимости от поставщика и метода (sregпротив топора).Вот что я придумала:

if ($axResponse) {
    if (is_array($a = $axResponse->get('http://axschema.org/contact/email'))) {
        $user_record['email'] = $a[0];
        if (is_array($b = $axResponse->get('http://axschema.org/namePerson'))) {
            $user_record['nickname'] = $b[0];
        }
    } else if (is_array($a = $axResponse->get('http://schema.openid.net/contact/email'))) {
        $user_record['email'] = $a[0];
        if (is_array($b = $axResponse->get('http://schema.openid.net/namePerson'))) {
            $user_record['nickname'] = $b[0];
        }
    }
} else if ($sreg) {
    if (isset($sreg['email'])) {
        $user_record['email'] = $sreg['email'];
    }
    if (isset($sreg['nickname'])) {
        $user_record['nickname'] = $sreg['nickname'];
    }
}

Хотя я успешно проверила это с Google, Yahoo!и OpenID AOL, я уверен, что у меня возникнут проблемы с другими / меньшими поставщиками.Есть ли лучший и лучший способ добиться того же результата?Это кажется особенно ошибочным, если я пытаюсь получить другие дополнительные поля ...

Ответы [ 2 ]

2 голосов
/ 01 ноября 2011

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

0 голосов
/ 22 сентября 2010

Что ж, извините ... я не знаю много о "компоненте OpenID для CakePHP", но я работал с lightopenid , и он также с открытым исходным кодом ..

Проверьте это: http://code.google.com/p/lightopenid/updates/list

Я работал с этим много раз ... и это хорошо .. Надеюсь, это поможет ...

...