function _extractSupportedAssociationType($server_error, $endpoint, $assoc_type)
{
// Any error message whose code is not 'unsupported-type'
// should be considered a total failure.
if ($server_error->error_code != 'unsupported-type' || $server_error->message->isOpenID1()) {
return null;
}
// The server didn't like the association/session type that we
// sent, and it sent us back a message that might tell us how
// to handle it.
// Extract the session_type and assoc_type from the error
// message
$assoc_type = $server_error->message->getArg(Auth_OpenID_OPENID_NS, 'assoc_type');
$session_type = $server_error->message->getArg(Auth_OpenID_OPENID_NS, 'session_type');
if ($assoc_type === null || $session_type === null) {
return null;
} else {
if (!$this->negotiator->isAllowed($assoc_type, $session_type)) {
return null;
} else {
return array($assoc_type, $session_type);
}
}
}