Я использую библиотеку PHP LightOpenID ( см. На странице ), чтобы пользователи могли войти на мой сайт с помощью своей учетной записи Google.Для другого провайдера OpenID вам просто нужно изменить поле $openid->identity
.Он обрабатывает весь поток аутентификации для нас.Вам не нужно беспокоиться о токене и прочем.
Вот страница, где я отображаю ссылку «Войти в Google»:
<?php
require_once 'openid.php';
$openid = new LightOpenID;
$openid->identity = 'https://www.google.com/accounts/o8/id';
$openid->required = array('contact/email');
$openid->returnUrl = 'http://my-website.com/landing-login.php'
?>
<a href="<?php echo $openid->authUrl() ?>">Login with Google</a>
Когда вы нажимаете на ссылку, Googleпоявится страница, попросите его подтвердить подлинность и / или разрешить вам восстановить его электронную почту.
Затем он будет перенаправлен на целевую страницу $openid->returnUrl
.Код для этой страницы должен быть:
<?php
require_once 'openid.php';
$openid = new LightOpenID;
if ($openid->mode) {
if ($openid->mode == 'cancel') {
// User has canceled authentication
} elseif($openid->validate()) {
// Yeah !
$data = $openid->getAttributes();
$email = $data['contact/email'];
} else {
// The user has not logged in via Google
}
} else {
// The user does not come from the link of the first page
}
?>
Если вы хотите получить больше информации от пользователя, вы должны добавить их к $openid->required
на первой странице.Например:
$openid->required = array(
'contact/email',
'namePerson/first',
'namePerson/last'
);
позволит вам, если пользователь примет это, получить его имя и фамилию на второй странице:
$name = $data['namePerson/first'] . " " . $data['namePerson/last'];
Надеюсь, что это поможет!1022 *