【发布时间】:2011-02-09 14:55:34
【问题描述】:
有没有办法通过 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 发送所有数据。
【问题讨论】:
-
如果您主要关心的是 URL 看起来不错,只需在获取所有数据后让您的端点重定向到正常的东西。虽然 LOID 支持 POST,但我怀疑每个 OID 提供程序都非常灵活。
-
嗯,我认为谷歌应该支持它。如何在 LOID 中指定使用 POST?
标签: php post openid lightopenid