Мне нужно зарегистрировать пользователя по OpenId (например, Google)Но это не работает!
Я уже видел некоторые темы:http://framework.zend.com/issues/browse/ZF-6905
Zend OpenId и Google И другие ..
Но все это не работает!
Мне нужно получить информацию о пользователе (например, логин или адрес электронной почты), но если я использую вот так
// $data['openidIdentifier'] = 'https://www.google.com/accounts/o8/id';
public function loginByOpenIdAction() {
$request = $this->getRequest();
$form = new Application_Form_UsersLoginByOpenId();
$this->view->headTitle('Login by OpenId');
if ($request->isPost()) {
$data = $request->getPost();
if ($form->isValid($data)) {
$consumer = new Zend_OpenId_Consumer();
$backUrl = $this->getHelper('Url')->url(array('controller' => 'users', 'action' => 'signup-from-open-id'));
if (!$consumer->login($data['openidIdentifier'], $backUrl)) {
$this->view->error = 'Can`t connect to OpenId provider';
}
}
}
$this->view->form = $form;
}
public function signupFromOpenIdAction() {
$consumer = new Zend_OpenId_Consumer();
$data = &$_GET;
$sreg = new Zend_OpenId_Extension_Sreg(array(
'nickname' => true,
'email' => false,
'fullname' => false), null, 1.1
);
if ($consumer->verify($data, $id, $sreg)) {
$properties = $sreg->getProperties();
var_dump($properties);
var_dump('allow', $id);
} else {
var_dump('deny', $id, $consumer);
}
die;
}
И вывод:
string 'deny' (length=4)
string 'https://www.google.com/accounts/o8/id?id=fooBarFooBar' (length=80)
object(Zend_OpenId_Consumer)[61]
protected '_storage' =>
object(Zend_OpenId_Consumer_Storage_File)[62]
private '_dir' => string '/tmp/azat/openid/consumer' (length=25)
protected '_dumbMode' => boolean false
protected '_cache' =>
array
empty
private '_httpClient' => null
private '_session' => null
private '_error' => string 'Extension::parseResponse failure' (length=32)
Пожалуйста, помогите: как я могу получить информацию о пользователе с сервера openid (например, Google) для зарегистрированного пользователя?
Если я использую $consumer->verify($data, $id)
, чемвсе хорошо, но мне нужна информация о пользователе для регистрации
А также я использую Zend_OpenId_Consumer из этой проблемы http://framework.zend.com/issues/browse/ZF-6905,, потому что с родным Zend_OpenId_Consumer $consumer->verify($data, $id)
это не работает
Также предложенияиспользуйте некоторых брокеров или других библиотек, работающих с openid not offer.