JanRain PHP OpenID: Как проверить, поддерживает ли провайдер AX программно? - PullRequest
3 голосов
/ 17 марта 2010

Хорошо, моя проблема в том, что некоторые провайдеры поддерживают SREG, а некоторые поддерживают только AX. Мне нужно знать, почему я могу запросить у провайдера какие методы они поддерживают. * но я ничего не видел.

Ответы [ 2 ]

2 голосов
/ 17 марта 2010

Столкнулся с подобной проблемой.

Код ниже должен помочь вам.

Так что если


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

0 голосов
/ 29 ноября 2010

Благодаря этому вопросу и ответу на другой вопрос , я создал пример использования этого кода таким образом, который имел смысл для меня, и, надеюсь, подойдет и вам. Это на http://gitorious.org/openid-examples/openid-examples

...