openid_complete
modules/openid/openid.module, строка 215
- Версии
- 6
openid_complete($response = array())
Completes OpenID authentication by validating returned data from the OpenID Provider.
Параметры
$response
Array of returned values from the OpenID Provider.
Возвращаемое значение
$response
Response values for further processing with
$response['status']
set to one of 'success'
, 'failed'
or 'cancel'
.
Код
<?php
function openid_complete($response = array()) {
module_load_include('inc', 'openid');
if (count($response) == 0) {
$response = _openid_response();
}
// Default to failed response
$response['status'] = 'failed';
if (isset($_SESSION['openid']['service']['uri']) && isset($_SESSION['openid']['claimed_id'])) {
$service = $_SESSION['openid']['service'];
$claimed_id = $_SESSION['openid']['claimed_id'];
unset($_SESSION['openid']['service']);
unset($_SESSION['openid']['claimed_id']);
if (isset($response['openid.mode'])) {
if ($response['openid.mode'] == 'cancel') {
$response['status'] = 'cancel';
}
else {
if (openid_verify_assertion($service['uri'], $response)) {
// If the returned claimed_id is different from the session claimed_id,
// then we need to do discovery and make sure the op_endpoint matches.
if ($service['version'] == 2 && $response['openid.claimed_id'] != $claimed_id) {
$disco = openid_discovery($response['openid.claimed_id']);
if ($disco[0]['uri'] != $service['uri']) {
return $response;
}
}
else {
$response['openid.claimed_id'] = $claimed_id;
}
$response['status'] = 'success';
}
}
}
}
return $response;
}
?>
Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии