我目前正在使用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
。
据我所知,为了获得用户联系人列表,我必须使用Feed:
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();
}
?>
答案 0 :(得分:5)
您不能使用LightOpenID,因为它只实现OpenID协议。
您需要OAuth(2.0)协议才能执行此操作。每the docs:
关于授权协议
我们建议您使用OAuth 2.0来授权请求。
如果您的申请有某些不寻常的授权要求, 例如在请求数据访问的同时登录(混合) 或域范围的授权(2LO),那么你不能 目前使用OAuth 2.0令牌。在这种情况下,您必须改为使用 OAuth 1.0令牌和API密钥。您可以找到您的应用程序的API 键入Google API控制台,在“简单API访问”部分中 API访问窗格。
答案 1 :(得分:0)
检索所有联系人
要检索所有用户的联系人,请发送授权的GET请求 到以下网址:
https://www.google.com/m8/feeds/contacts/ {USEREMAIL} /全
使用适当的值代替userEmail。
注意:默认的特殊userEmail值可用于引用 经过身份验证的用户。
答案 2 :(得分:0)
应该可以按照文档: https://developers.google.com/accounts/docs/OpenID
OpenID + OAuth混合协议允许Web开发人员将OpenID请求与OAuth结合使用 验证请求。此扩展程序对于同时使用OpenID和OAuth的Web开发人员非常有用,特别是它通过请求批准一次而不是两次来简化用户的过程。