gpt4 book ai didi

php - 使用 POST 方法的 LightOpenID 身份验证

转载 作者:搜寻专家 更新时间:2023-10-31 21:45:07 27 4
gpt4 key购买 nike

有没有办法使用 POST 方法使用 LightOpenID 库进行身份验证?确切地说,在验证之后,谷歌(例如)返回指定的 URL,但所有数据都是使用 GET 方法发送给我的,最终以丑陋和长的 URL 结尾。

我的代码是:

define('BASE_URL', 'http://someurl.com');

try {
$openid = new LightOpenID();

if (!isset($_GET['openid_mode'])) {
// no openid mode was set, authenticate user
$openid->identity = 'https://www.google.com/accounts/o8/id';
$openid->realm = BASE_URL;
$openid->required = array('contact/email');

header('Location: '.$openid->authUrl());

} else if ($_GET['openid_mode'] == 'cancel') {
// user canceled login, redirect them
header('Location: '.BASE_URL);

} else {
// authentication completed, perform license check
if ($openid->validate()) {
$openid->getAttributes();
}
}

} catch (ErrorException $e) {

}

所以在身份验证之后 OP 返回到看起来像这样的 url:

http://someurl.com/index.php?openid.ns=http://specs.openid.net/auth/2.0&openid.mode=id_res&openid.op_endpoint=https://www.googl...

我希望 OP 返回到:

http://someurl.com/index.php

并使用 POST 而不是 GET 发送所有数据。

最佳答案

我一直在做同样的事情。请参阅下面的代码。我认为这应该有所帮助。

<?php 
require 'lightopenid/openid.php';
try {
$openid = new LightOpenID;
if(!$openid->mode) {
if(isset($_GET['login'])) {
$openid->identity = 'https://www.google.com/accounts/o8/site-xrds?hd=yourdomain.com';
$openid->required = array('namePerson/friendly', 'contact/email' , 'contact/country/home', 'namePerson/first', 'pref/language', 'namePerson/last');
header('Location: ' . $openid->authUrl());
}
?>
<form action="?login" method="post">
<button>Login with Google</button>
</form>
<?php
} elseif($openid->mode == 'cancel') {
echo 'User has canceled authentication !';
} else {
session_start();
$fname = $openid->ret_fname(); // setting session
$lname = $openid->ret_lname(); // setting session
$email = $openid->ret_email(); // setting session
$_SESSION['admin']['name'] = $fname.' '.$lname; // setting session
$_SESSION['admin']['emailID'] = $email; // setting session

header('Location:approve.php'); // PUT YOUR PAGE/URL HERE.... I THINK THIS SHOULD DO THE TRICK !!!
}
} catch(ErrorException $e) {
echo $e->getMessage();
}

关于php - 使用 POST 方法的 LightOpenID 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4946522/

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