Yahoo open id login api
-
21-12-2019 - |
Вопрос
Я новичок в open id, но все же я попытался интегрировать open id на свой веб-сайт.Я использую провайдера yahoo для входа на свой веб-сайт.Может ли кто-нибудь помочь мне в получении информации о пользователе, такой как почтовый идентификатор yahoo, имя, фамилия.
Я взял приведенный ниже код с веб-сайта, который предоставлен для Google, я сменил провайдера на yahoo
Код, который я опробовал:
<?php
# Logging in with Google accounts requires setting special identity, so this example shows how to do it.
require 'openid.php';
try {
# Change 'localhost' to your domain name.
$openid = new LightOpenID('localhost');
if(!$openid->mode) {
if(isset($_GET['login'])) {
$openid->identity = 'https://me.yahoo.com';
header('Location: ' . $openid->authUrl());
}
?>
<form action="?login" method="post">
<button>Login with Yahoo</button>
</form>
<?php
} elseif($openid->mode == 'cancel') {
echo 'User has canceled authentication!';
} else {
echo 'User ' . ($openid->validate() ? $openid->identity . ' has ' : 'has not ') . 'logged in.';
print_r($openid->ax_to_sreg);
}
} catch(ErrorException $e) {
echo $e->getMessage();
}
После входа в систему я выхожу вот так :
User https://open.login.yahooapis.com/openidx20/user_profile/XXXX has logged in.
какая польза от приведенного выше URL-адреса?Как я могу получить информацию о пользователе?
Решение
После долгих поисков в Google нахожу свое решение.Теперь я могу получить адрес электронной почты вошедшего в систему пользователя
Вот измененный код :
<?php
require 'openid.php';
try
{
# Change 'localhost' to your domain name.
$openid = new LightOpenID($_SERVER['HTTP_HOST']);
//Not already logged in
if(!$openid->mode)
{
//do the login
if(isset($_GET['login']))
{
//The google openid url
$openid->identity = 'https://me.yahoo.com';
//Get additional google account information about the user , name , email , country
$openid->required = array('contact/email' , 'namePerson/first' , 'namePerson/last' , 'pref/language' , 'contact/country/home');
//start discovery
header('Location: ' . $openid->authUrl());
}
else
{
//print the login form
login_form();
}
}
else if($openid->mode == 'cancel')
{
echo 'User has canceled authentication!';
//redirect back to login page ??
}
//Echo login information by default
else
{
if($openid->validate())
{
//User logged in
$d = $openid->getAttributes();
$first_name = $d['namePerson/first'];
$last_name = $d['namePerson/last'];
$email = $d['contact/email'];
$language_code = $d['pref/language'];
$country_code = $d['contact/country/home'];
$data = array(
'first_name' => $first_name ,
'last_name' => $last_name ,
'email' => $email ,
);
//now signup/login the user.
print_r($data);
}
else
{
//user is not logged in
}
}
}
catch(ErrorException $e)
{
echo $e->getMessage();
}
/*
This function will print the login form with the button
*/
function login_form()
{
?>
<a href="?login">Login with Yahoo</a>
<?php
}
Не связан с StackOverflow