Jestem nowy w logice OpenID. Używam składnik OpenID dla CakePHP przez Cakebaker, z biblioteki PHP OpenID przez JanRain.Czy istnieje lepszy sposób na pobranie informacji o identyfikatorze OpenID od dostawcy?
To wszystko działa całkiem dobrze, ale nie mogłem znaleźć wyczerpującego sposobu na odzyskanie informacji użytkownika w zależności od dostawcy i metody (sreg vs. ax). Oto, co wymyśliłem:
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'];
}
}
Mimo że przetestowałem to z powodzeniem w Google, Yahoo! i OpenID AOL, jestem pewien, że wpadłbym w kłopoty z innymi/mniejszymi dostawcami. Czy istnieje lepszy i lepszy sposób na osiągnięcie tego samego rezultatu? Wydaje się to szczególnie wadliwe, gdy próbuję pobrać inne opcjonalne pola ...
Całkowicie się z tobą zgadzam, o ile zamknę to pytanie i zaakceptuję twoją odpowiedź. Na szczęście od tego czasu sytuacja znacznie się rozwinęła, a OAuth2 uzyskał wsparcie, a obecnie korzystam z niego tylko i będę korzystać z OpenID w większości przypadków. –