--- openid.module 2008-11-26 23:32:12.000000000 +0100 +++ openid.module.new 2008-11-26 23:32:26.000000000 +0100 @@ -271,6 +271,10 @@ if (_openid_is_xri($claimed_id)) { $xrds_url = 'http://xri.net/'. $claimed_id; } + // Google Federated Login + if(strpos($claimed_id, '@') > 1) { + $xrds_url = 'https://www.google.com/accounts/o8/id'; + } $url = @parse_url($xrds_url); if ($url['scheme'] == 'http' || $url['scheme'] == 'https') { // For regular URLs, try Yadis resolution first, then HTML-based discovery @@ -398,6 +402,10 @@ } } elseif (variable_get('user_register', 1)) { + if ($response['openid.ext1.value.email'] != '' and $response['openid.op_endpoint'] == 'https://www.google.com/accounts/o8/ud') { + $response['openid.sreg.email'] = $response['openid.ext1.value.email']; + $response['openid.sreg.nickname'] = substr($response['openid.ext1.value.email'], 0, strpos($response['openid.ext1.value.email'], '@')); + } // Register new user $form_state['redirect'] = NULL; $form_state['values']['name'] = (empty($response['openid.sreg.nickname'])) ? $identity : $response['openid.sreg.nickname']; @@ -479,6 +487,12 @@ $request['openid.sreg.required'] = 'nickname,email'; $request['openid.ns.sreg'] = "http://openid.net/extensions/sreg/1.1"; + // Google Federated Login + $request['openid.ns.ext1'] = "http://openid.net/srv/ax/1.0"; + $request['openid.ext1.mode'] = 'fetch_request'; + $request['openid.ext1.type.email'] = 'http://schema.openid.net/contact/email'; + $request['openid.ext1.required'] = 'email'; + $request = array_merge($request, module_invoke_all('openid', 'request', $request)); return $request;