我是OpenID邏輯新手。我使用Cakebaker的CakePHP的OpenID組件,以及JanRain的PHP OpenID庫。有沒有更好的方式從提供者獲取OpenID的信息?
這一切都工作得很好,但我找不到一個詳盡的方式來檢索用戶信息取決於提供者和方法(sreg與ax)。所以這就是我想出的:
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,我相信我會遇到其他/小型提供商的麻煩。有更好更好的方法來達到相同的效果嗎?這似乎特別有缺陷,如果我嘗試獲取其他可選字段...
我完全同意你的意見,只要關閉這個問題並接受你的答案。幸運的是,自那時以來,事情發生了很大變化,OAuth2獲得了支持,現在,我只會使用它,並在大多數使用情況下使用OpenID完成。 – 2011-11-03 15:31:06