我目前正在使用LightOpenID允许用户登录我的网站,在那里我可以自动提取他们的用户名和电子邮件地址:
$openid->required = array('namePerson/first', 'namePerson/last', 'contact/email');
$openid->identity = 'https://www.google.com/accounts/o8/id';
这里我使用参数 namePerson/first
、 namePerson/last
和 contact/email
。
我知道为了获得用户联系人列表,我必须使用提要:
https://www.google.com/m8/feeds
但是,我似乎无法弄清楚我需要为此使用哪些参数?
如果我完全删除参数行,我只会得到一个空数组。
任何人都可以帮我弄清楚我需要哪些参数来获取联系人吗?
这是我当前的代码:
<?php
require '/var/www/libraries/openid.php';
try {
$openid = new LightOpenID;
if(!$openid->mode) {
//$openid->required = array('gd/fullName');
$openid->identity = 'https://www.google.com/m8/feeds/contacts/oshirowanen.y%40gmail.com/full';
header('Location: ' . $openid->authUrl());
exit;
} elseif($openid->mode == 'cancel') {
echo "cancelled";
exit;
} else {
if ( $openid->validate() ) {
$returned = $openid->getAttributes();
print_r($returned);
exit;
} else {
echo "something is wrong";
exit;
}
}
} catch(ErrorException $e) {
echo $e->getMessage();
}
?>
你不能用LightOpenID做到这一点,因为它只实现了OpenID协议。
您将需要OAuth(2.0)协议来执行此操作。根据文档:
关于授权协议
我们建议使用 OAuth 2.0 对请求进行授权。
如果您的应用程序有某些不寻常的授权要求, 例如在请求数据访问的同时登录(混合) 或全域授权 (2LO),则不能 目前使用 OAuth 2.0 令牌。在这种情况下,您必须改为使用 OAuth 1.0 令牌和 API 密钥。您可以找到应用程序的 API 键,在 Google API 控制台的简单 API 访问部分中 "API 访问"窗格。
根据文档:
检索所有联系人
要检索用户的所有联系人,请发送授权的 GET 请求 到以下网址:
https://www.google.com/m8/feeds/contacts/{userEmail}/full
使用适当的值代替用户电子邮件。
注意:特殊用户电子邮件值默认值可用于引用 经过身份验证的用户。
根据文档,这应该是可能的:https://developers.google.com/accounts/docs/OpenID
OpenID+OAuth 混合协议允许 Web 开发人员将 OpenID 请求与 OAuth 相结合 身份验证请求。此扩展对于同时使用 OpenID 和 OAuth 的 Web 开发人员非常有用,特别是因为它通过请求用户一次而不是两次批准来简化用户的流程。