0

我正在使用 google-api-php-client-0.6.0 实现 gmail 联系人获取

if ($client->getAccessToken()) {
  $req = new Google_HttpRequest("https://www.google.com/m8/feeds/contacts/default/full?max-results=9999&alt=json");
  $val = $client->getIo()->authenticatedRequest($req);
  // The contacts api only returns XML responses.
  //$response = json_encode(simplexml_load_string($val->getResponseBody()));
   print_r(json_decode($val->getResponseBody())) ;

  // The access token may have been updated lazily.
  $_SESSION['token'] = $client->getAccessToken();
}

有了这个 HTTprequest,我得到了如下的用户详细信息结果

[0] => stdClass Object
                    (
                        [id] => stdClass Object
                            (
                                [$t] => http://www.google.com/m8/feeds/contacts/sivagopaltech%40gmail.com/base/1301bd0ce878b5
                            )

                        [updated] => stdClass Object
                            (
                                [$t] => 2011-10-10T04:40:56.311Z
                            )

                        [category] => Array
                            (
                                [0] => stdClass Object
                                    (
                                        [scheme] => http://schemas.google.com/g/2005#kind
                                        [term] => http://schemas.google.com/contact/2008#contact
                                    )

                            )

                        [title] => stdClass Object
                            (
                                [type] => text
                                [$t] => 
                            )

                        [link] => Array
                            (
                                [0] => stdClass Object
                                    (
                                        [rel] => http://schemas.google.com/contacts/2008/rel#edit-photo
                                        [type] => image/*
                                        [href] => https://www.google.com/m8/feeds/photos/media/sivagopaltech%40gmail.com/1301bd0ce878b5/1B2M2Y8AsgTpgAmY7PhCfg
                                    )

                                [1] => stdClass Object
                                    (
                                        [rel] => self
                                        [type] => application/atom+xml
                                        [href] => https://www.google.com/m8/feeds/contacts/sivagopaltech%40gmail.com/full/1301bd0ce878b5
                                    )

                                [2] => stdClass Object
                                    (
                                        [rel] => edit
                                        [type] => application/atom+xml
                                        [href] => https://www.google.com/m8/feeds/contacts/sivagopaltech%40gmail.com/full/1301bd0ce878b5/1318221656311001
                                    )

                            )

                        [gd$email] => Array
                            (
                                [0] => stdClass Object
                                    (
                                        [rel] => http://schemas.google.com/g/2005#other
                                        [address] => jagadeesh.miriyala@gmail.com
                                        [primary] => true
                                    )

                            )

                    )

在我看来 $t 和其他人是出乎意料的,在这种情况下,我正在获取用户电子邮件 ID

当我如下更改代码和 httpRequest 时,我只获取用户名而不是 emailid

if ($client->getAccessToken()) {
  $req = new Google_HttpRequest("https://www.google.com/m8/feeds/contacts/default/full?max-results=9999");
  $val = $client->getIo()->authenticatedRequest($req);
  // The contacts api only returns XML responses.
  $response = json_encode(simplexml_load_string($val->getResponseBody()));
   print_r(json_decode($response)) ;

  // The access token may have been updated lazily.
  $_SESSION['token'] = $client->getAccessToken();
}

用户详细信息格式是这样的

[title] => 96 76 36 78 07 chakri        // username
                    [link] => Array
                        (
                            [0] => stdClass Object
                                (
                                    [@attributes] => stdClass Object
                                        (
                                            [rel] => http://schemas.google.com/contacts/2008/rel#edit-photo
                                            [type] => image/*
                                            [href] => https://www.google.com/m8/feeds/photos/media/sivagopaltech%40gmail.com/826b6c0fa89181/a9haUsi43SXQrgy78Gjg4Q
                                        )

                                )

                            [1] => stdClass Object
                                (
                                    [@attributes] => stdClass Object
                                        (
                                            [rel] => http://schemas.google.com/contacts/2008/rel#photo
                                            [type] => image/*
                                            [href] => https://www.google.com/m8/feeds/photos/media/sivagopaltech%40gmail.com/826b6c0fa89181
                                        )

                                )

                            [2] => stdClass Object
                                (
                                    [@attributes] => stdClass Object
                                        (
                                            [rel] => self
                                            [type] => application/atom+xml
                                            [href] => https://www.google.com/m8/feeds/contacts/sivagopaltech%40gmail.com/full/826b6c0fa89181
                                        )

                                )

                            [3] => stdClass Object
                                (
                                    [@attributes] => stdClass Object
                                        (
                                            [rel] => edit
                                            [type] => application/atom+xml
                                            [href] => https://www.google.com/m8/feeds/contacts/sivagopaltech%40gmail.com/full/826b6c0fa89181/1349307874947993
                                        )

                                )

                        )

                )

任何人都可以建议我如何避免那些 $t 变量或如何使用第二个 httprequest 获取 emailid

4

1 回答 1

1

问题是 simplexml 如何格式化响应。它删除了电子邮件字段。将 "?alt=json" 添加到 api 调用的末尾,它将返回一个 json。json_decode 响应,您将拥有一个带有电子邮件的漂亮 php 对象

于 2013-07-05T08:12:34.013 回答