Question

IM NOUVEAU Pour ouvrir ID, mais j'ai toujours essayé d'intégrer l'identifiant ouvert sur mon site Web.Je suis en utilisant Yahoo Fournisseur pour vous connecter à mon site Web.Est-ce que tout aident à m'aider à obtenir les informations de l'utilisateur comme Yahoo Mail ID, prénom, nom de famille.

J'ai pris le code ci-dessous à partir d'un site Web fourni pour Google, j'ai modifié le fournisseur à Yahoo

code que j'ai essayé:

<?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();
}

Après la connexion, je sors que ceci:

User https://open.login.yahooapis.com/openidx20/user_profile/XXXX has logged in.

Quelle est l'utilisation de l'URL ci-dessus?Comment puis-je récupérer les informations de l'utilisateur?

Était-ce utile?

La solution

Après avoir googling beaucoup trouver ma solution.Maintenant, je suis capable d'aller chercher l'email de l'utilisateur connecté

Voici le code modifié:

<?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
}

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top