7

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

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

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

    }
?>
4

3 回答 3

5

你不能用 LightOpenID 做到这一点,因为它只实现了 OpenID 协议。

您将需要 OAuth (2.0) 协议来执行此操作。根据文档

关于授权协议

我们建议使用 OAuth 2.0 来授权请求​​。

如果您的应用程序有某些不寻常的授权要求,例如在请求数据访问(混合)或域范围授权 (2LO) 的同时登录,那么您目前无法使用 OAuth 2.0 令牌。在这种情况下,您必须改为使用 OAuth 1.0 令牌和 API 密钥。您可以在 Google API 控制台的 API 访问窗格的简单 API 访问部分中找到应用程序的 API 密钥。

于 2012-07-01T23:10:45.307 回答
0

根据文档

检索所有联系人

要检索用户的所有联系人,请将授权的 GET 请求发送到以下 URL:

https://www.google.com/m8/feeds/contacts/ {userEmail}/full

用适当的值代替 userEmail。

注意:特殊的 userEmail 值 default 可用于指代经过身份验证的用户。

于 2012-06-28T19:38:00.287 回答
0

根据文档应该是可能的: https ://developers.google.com/accounts/docs/OpenID

OpenID+OAuth 混合协议允许 Web 开发人员将 OpenID 请求与 OAuth 身份验证请求结合起来。此扩展对于同时使用 OpenID 和 OAuth 的 Web 开发人员很有用,特别是因为它通过请求用户批准一次而不是两次来简化用户的流程。

于 2012-08-08T16:15:19.493 回答