【问题标题】:Need to find first & Last name from google Contact API需要从 google Contact API 中查找名字和姓氏
【发布时间】:2024-05-21 05:15:01
【问题描述】:

我需要使用 jquery 获取 google 联系人。我已经成功地完全实施了。但问题是我无法获取该联系人的姓名。谷歌只是向我提供该用户的电子邮件地址。用户未提供其他信息。所以我想念一些东西。

在这里我附上完整的代码和响应。

这里是完整代码

<script type="text/javascript" src="https://apis.google.com/js/client.js"></script>
<script type="text/javascript">
    var clientId = "google_clientId";
    var apiKey = "google_api_key";
    var scopes = 'https://www.google.com/m8/feeds/';
    $(document).on("click", ".googleContactsButton", function (e) {
        gapi.client.setApiKey(apiKey);
        window.setTimeout(authorize);
    });
    function authorize() {
        gapi.auth.authorize({client_id: clientId, scope: scopes, immediate: false}, handleAuthorization);
    }

    function handleAuthorization(authorizationResult) {
        if (authorizationResult && !authorizationResult.error) {

            $.get("https://www.google.com/m8/feeds/contacts/default/full?alt=json&access_token=" + authorizationResult.access_token + "&alt=json",
                    function (response) {
                        //process the response here
                        console.log(JSON.stringify(response));

                    });
        }
    }
</script>

这是 API 的响应

[
  {
    "id": {
      "$t": "http://www.google.com/m8/feeds/contacts/ishan%40inheritx.com/base/87427988f9359bf"
    },
    "updated": {
      "$t": "2016-07-21T08:09:55.053Z"
    },
    "category": [
      {
        "scheme": "http://schemas.google.com/g/2005#kind",
        "term": "http://schemas.google.com/contact/2008#contact"
      }
    ],
    "title": {
      "type": "text",
      "$t": ""
    },
    "link": [
      {
        "rel": "http://schemas.google.com/contacts/2008/rel#edit-photo",
        "type": "image/*",
        "href": "https://www.google.com/m8/feeds/photos/media/ishan%40inheritx.com/87427988f9359bf/1B2M2Y8AsgTpgAmY7PhCfg"
      },
      {
        "rel": "self",
        "type": "application/atom+xml",
        "href": "https://www.google.com/m8/feeds/contacts/ishan%40inheritx.com/full/87427988f9359bf"
      },
      {
        "rel": "edit",
        "type": "application/atom+xml",
        "href": "https://www.google.com/m8/feeds/contacts/ishan%40inheritx.com/full/87427988f9359bf/1469088595053001"
      }
    ],
    "gd$email": [
      {
        "rel": "http://schemas.google.com/g/2005#other",
        "address": "prakash@inheritx.com"
      }
    ]
  }
]

作为回应,我们没有找到像名字和姓氏这样的字段。任何帮助将不胜感激。

但如果我手动添加名称,那么它会在标题键中显示我。但如果该联系人姓名是从 google+ 同步的,那么它会显示为空白。

谢谢

【问题讨论】:

  • 像我在回答中所做的那样,在 oauth 操场 Contactsv3 中进行快速试驾。

标签: google-api google-contacts-api google-shared-contacts google-profiles-api


【解决方案1】:

将 &v=3 添加到 URL 的末尾。这将填充名称字段。但是,由于响应中的标题字段为空,这意味着该特定联系人没有应用任何名称。

此外,不相关且无害,但您似乎在 URL 查询参数中指定了 alt=json 两次。

【讨论】:

  • 不,那也不返回名字
  • 那么该特定联系人没有姓名。当不存在时,联系人 API 不会回退到默认名称值,而是忽略该字段。在版本 3 及更高版本中添加了名称字段。版本 1 和 2 使用 字段。如果标题字段为空,则即使启用 v=3,也不存在名称。我已经更新了答案,使其更加具体。
  • 是的,实际上你是对的。该字段中没有名称。但该联系人是从 G+ 同步的。所以我需要的是,如果该名称字段为空,那么它应该向我显示联系人列表中显示的 G+ 名称。
  • 除了将 G+ 个人资料照片加入您的联系人数据之外,联系人 API 仅返回您自己在联系人中直接定义的信息。如果您想要 G+ 用户在其个人资料中定义的信息,那么您希望使用提供此功能的 People API:developers.google.com/people
  • 是的,我知道。但我需要将两者合二为一。就好像我同时使用了它们一样,那么它需要很长时间才能获取所有用户的详细信息。所以我需要两个都在一个地方。
【解决方案2】:

我们没有找到像名字和姓氏这样的字段。任何帮助将不胜感激

获取联系人的全名有点棘手。使用oauth playground,Contactsv3,我是这样做的:

  1. 首先,您需要知道联系人的contactId。怎么样?

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

    此 URI 请求将返回与您的电子邮件关联的所有联系人。现在在 XML &lt;id&gt; tag 中找到了 contactId。 &lt;id&gt;http://www.google.com/m8/feeds/contacts/../base/123456789abcdefg&lt;/id&gt;

    在这种情况下,123456789abcdefg 是某个人的 contactId。全名可在&lt;title&gt; 标签中找到。
    &lt;title type="text"&gt;John Carmack&lt;/title&gt;

  2. 要单独获取人员的详细联系信息,与步骤 1 不同,请使用: GEThttps://www.google.com/m8/feeds/contacts/{your_userEmail}/full/123456789abcdefg

现在由您来解析此响应并相应地使用它。我还没有检查是否有 JSON 格式,但我希望这对你有帮助。

【讨论】:

  • 是的,但这也没有返回任何名称
  • 它返回一个响应正文,其中包含 标签中的名称“John Carmack”,“不返回任何名称”是什么意思?你必须解析它。我只是给你看。
  • 实际上它在名称列中包含空值。像 > "title": { "type": "text", "$t": "" },
  • 响应正文是 XML 格式而不是 JSON。我还没有尝试解析 XML 格式。试试这个using jquery
  • 是的,我也尝试过使用 XML,但都与这个 JSON 相同。
最近更新 更多