好的,我发现修改 XRDS-Simple 实现以支持 Google 的 Host-Meta 发现机制相对简单。需要注意的是,这是 Google 命名空间内的一种实验性发现机制,应该稍后更改为更适合全球独立系统的机制。
XRDS-Simple 补丁:
查找身份 URL 以输入 PHP-OpenID 的示例用法:
<?php
require_once 'XRDS.php';
require_once 'XRDS/Discovery.php';
$domain = 'google.com';
$disco = new XRDS_Discovery();
$disco->discovery_methods = array('XRDS_Discovery_Host_Meta');
$xrds = $disco->discover('https://www.google.com/accounts/o8/.well-known/host-meta?hd=' . $domain);
$xrd = $xrds->xrd[0];
$identityUri = $xrd->service[1]->uri[0]->uri;
if (0 == strcmp($xrd->canonicalId, $domain)) {
echo "identity uri: $identityUri\n\n";
} else {
echo "discovery failed.\n\n";
}
?>