openid_begin($claimed_id, $return_to = '', $form_values = array())The initial step of OpenID authentication responsible for the following:
$claimed_id The OpenID to authenticate
$return_to The endpoint to return to from the OpenID Provider
modules/openid/openid.module, line 178
<?php
function openid_begin($claimed_id, $return_to = '', $form_values = array()) {
module_load_include('inc', 'openid');
$claimed_id = openid_normalize($claimed_id);
$services = openid_discovery($claimed_id);
$service = _openid_select_service($services);
if (!$service) {
form_set_error('openid_identifier', t('Sorry, that is not a valid OpenID. Ensure you have spelled your ID correctly.'));
return;
}
// Store discovered information in the users' session so we don't have to rediscover.
$_SESSION['openid']['service'] = $service;
// Store the claimed id
$_SESSION['openid']['claimed_id'] = $claimed_id;
// Store the login form values so we can pass them to
// user_exteral_login later.
$_SESSION['openid']['user_login_values'] = $form_values;
// If bcmath is present, then create an association
$assoc_handle = '';
if (function_exists('bcadd')) {
$assoc_handle = openid_association($service['uri']);
}
if (in_array('http://specs.openid.net/auth/2.0/server', $service['types'])) {
// User entered an OP Identifier.
$claimed_id = $identity = 'http://specs.openid.net/auth/2.0/identifier_select';
}
else {
// Look for OP-Local Identifier.
if (!empty($service['localid'])) {
$identity = $service['localid'];
}
elseif (!empty($service['delegate'])) {
$identity = $service['delegate'];
}
else {
$identity = $claimed_id;
}
}
$request = openid_authentication_request($claimed_id, $identity, $return_to, $assoc_handle, $service);
if ($service['version'] == 2) {
openid_redirect($service['uri'], $request);
}
else {
openid_redirect_http($service['uri'], $request);
}
}
?>