JanRain PHP OpenID: Как проверить, поддерживает ли провайдер программно AX?
Хорошо, моя проблема в том, что некоторые провайдеры поддерживают SREG, а некоторые поддерживают только AX. Мне нужно знать, почему я могу запросить у провайдера, какие методы они поддерживают. Я попытался просмотреть документацию здесь http://openidenabled.com/files/php-openid/docs/2.1.3/ но я ничего не видел.
2 ответа
Решение
Столкнулся с подобной проблемой.
Код ниже должен помочь вам.
Так что если
function getReturnTo() {
return sprintf("%s://%s:%s%s/finish_auth.php",
getScheme(), $_SERVER['SERVER_NAME'],
$_SERVER['SERVER_PORT'],
dirname($_SERVER['PHP_SELF']));
}
function &getConsumer() {
/**
* Create a consumer object using the store object created
* earlier.
*/
$store = getStore();
$consumer =& new Auth_OpenID_Consumer($store);
return $consumer;
}
$consumer = getConsumer();
$return_to = getReturnTo();
$response = $consumer->complete($return_to);
$sreg_resp = Auth_OpenID_SRegResponse::fromSuccessResponse($response);
$ax = new Auth_OpenID_AX_FetchResponse();
$obj = $ax->fromSuccessResponse($response);
if($sreg)
{
//sreg is supported, start creating the sreg data array.
}
elseif($obj)
{
// attribute exchange supported. fetch details here
}
это поможет вам диагностировать, какие данные поступают, SREG или Atribute Exchange
Благодаря этому вопросу и ответу на другой вопрос, я создал пример использования этого кода таким образом, который имел смысл для меня, и, надеюсь, будет для вас тоже. Это на http://gitorious.org/openid-examples/openid-examples