gpt4 book ai didi

php - 使用 LightOpenID 登录用户

转载 作者:可可西里 更新时间:2023-10-31 22:17:54 25 4
gpt4 key购买 nike

你好
我几个小时前下载了 LightOpenID (http://gitorious.org/lightopenid),但仍然不知道如何让它工作。
我在 test.php 文件中保存了这个 google 示例

<?php
require '../lib/init.php';
require '../lib/openID/openid.php';

try {
if(!isset($_GET['openid_mode'])) {
if(isset($_GET['login'])) {
$openid = new LightOpenID;
$openid->identity = 'https://www.google.com/accounts/o8/id';
header('Location: ' . $openid->authUrl());
}
?>
<form action="?login" method="post">
<button>Login with Google</button>
</form>
<?php
} elseif($_GET['openid_mode'] == 'cancel') {
echo 'User has canceled authentication!';
} else {
$openid = new LightOpenID;
echo 'User ' . ($openid->validate() ? $openid->identity . ' has ' : 'has not ') . 'logged in.';
}
} catch(ErrorException $e) {
echo $e->getMessage();
}
echo '<pre>'.print_r($openid,true).'</pre>';
?>

其中 init.php 是我页面的初始化文件(常量、类、函数、数据库连接等)。
运行此代码后,我得到了带有标签“使用 Google 登录”的按钮,并在按下它之后

echo '<pre>'.print_r($openid,true).'</pre>';

提供一些关于 $openid 对象的信息

LightOpenID Object ( [returnUrl] => http://kur.com/openid.php [required] => Array ( )

[optional] => Array
(
)

[identity:LightOpenID:private] => https://www.google.com/accounts/o8/id
[claimed_id:LightOpenID:private] => https://www.google.com/accounts/o8/id
[server:protected] => https://www.google.com/accounts/o8/ud
[version:protected] => 2
[trustRoot:protected] => http://kur.com
[aliases:protected] =>
[identifier_select:protected] => 1
[ax:protected] => 1
[sreg:protected] =>
[data:protected] => Array
(
[login] =>
)

)

...没什么特别的...就是这样...
我花了很多时间在谷歌搜索教程,但找不到一个。你能帮帮我吗?
如何登录用户?
我必须从哪里获取记录的用户信息(如用户名、邮件)?
我从来没有使用过开放 ID,我很困惑....
提前致谢

最佳答案

如何登录用户?

在您的示例中,有一行显示如何完成身份验证:

echo 'User ' . ($openid->validate() ? $openid->identity . ' has ' : 'has not ') . 'logged in.';

如果 $openid->validate() 返回 true,则表示声明为 $openid->identity 的用户已通过身份验证。

如果您将其与标准身份验证进行比较:

标准授权:

  • 用户输入登录名和密码
  • Server检查是否存在这样一对登录名和密码。
  • 如果存在,则用户已通过身份验证(使用他提供的登录名),因此我们设置一个 cookie 来记住他(或您希望在成功登录后执行的任何其他操作)。

OpenID 认证(使用 LightOpenID):

  • 用户输入一个openid身份
  • 服务器使用 LightOpenID 对其进行身份验证,然后调用 $openid->validate()
  • 如果 validate() 返回 true,则用户已通过身份验证(使用 $openid->identity),因此我们设置一个 cookie 来记住他(或其他任何你想要的)想要在成功登录时执行此操作)。

基本上,一旦您确认用户是他声称的那个人(即他已经通过身份验证),您就可以像正常身份验证一样继续。

通常,您必须将身份与 session ID 一起存储在某处。

我必须从哪里获取记录的用户信息(如用户名、邮件)?

用户名在$openid->identity中。但是,您可能希望使用昵称作为显示名称。然而,获取昵称和电子邮件地址需要额外的配置。基本上,在调用 $openid->authUrl() 之前,您必须添加:

$openid->required = array('namePerson/friendly', 'contact/email');

该行将导致 LightOpenID 请求这些参数。您可以在 axschema.org 查看其他参数列表(OP 可能支持也可能不支持) .然后,要获取这些值,在调用 validate() 之后,调用 $openid->getAttributes()。它将返回所有可用的参数,例如:

array(
[namePerson/friendly] => Mewp
[contact/email] => mewp@example.com
)

但是请注意,此列表可以包含其他参数,但可能不包含您请求的参数。基本上,OP 可以自由地返回它想要的任何东西,因此您需要为缺少某些值做好准备。

关于php - 使用 LightOpenID 登录用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3995011/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com