使用LightOpenID获取Google通讯录?

时间:2012-06-24 11:04:43

标签: php google-api google-contacts lightopenid

我目前正在使用LightOpenID来允许用户登录我的网站,在那里我可以自动提取他们的用户名和电子邮件地址:

$openid->required = array('namePerson/first', 'namePerson/last', 'contact/email');
$openid->identity = 'https://www.google.com/accounts/o8/id';

我在这里使用参数namePerson/firstnamePerson/lastcontact/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();

    }
?>

3 个答案:

答案 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)

Per the docs

  

检索所有联系人

     

要检索所有用户的联系人,请发送授权的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开发人员非常有用,特别是它通过请求批准一次而不是两次来简化用户的过程。