【问题标题】:Legacy People API has not been used in project项目中未使用旧版 People API
【发布时间】:2021-10-28 23:33:39
【问题描述】:

调用 google 登录 API 时出现错误。错误是

“Legacy People API 之前未在项目 ************ 中使用过或已禁用”

但人员 API 已启用。如何解决这个错误?

这是我的 google api url 这足以解决我的问题

if (empty($_POST['google_key'])) {
        $error_code    = 5;
        $error_message = 'google_key (POST) is missing';
    } else {
        $app_key = $_POST['google_key'];
        // https://www.googleapis.com/plus/v1/people/me?access_token={$access_token}&key={$app_key}
        $get_user_details = fetchDataFromURL("https://people.googleapis.com/v1/people/me?access_token={$access_token}&key={$app_key}");
        $json_data = json_decode($get_user_details);
        if (!empty($json_data->error)) {
            $error_code    = 4;
            $error_message = $json_data->error;
        } else if (!empty($json_data->id)) {
            $social_id = $json_data->id;
            $social_email = $json_data->emails[0]->value;
            $social_name = $json_data->displayName;
            if (empty($social_email)) {
                $social_email = 'go_' . $social_id . '@google.com';
            }
        }
    }

这是我的代码,其中 m 使用应用程序密钥作为谷歌密钥和访问令牌现在向我解释问题出在哪里

【问题讨论】:

  • @Christoph 这个问题被标记为 PHP,这意味着作者正在使用 php,您提到的副本是 C#。你还认为它是重复的吗?
  • 请编辑您的问题并包括minimal reproducible example,特别是您的授权码和您尝试调用的方法。
  • @DaImTo 我做了一个快速研究,据我所知,这个问题特定于 API,而不是编程语言。更多的是使用正确的端点而不是实现它们。链接问题中的答案也不是特定于 c#,所以我认为它可能是重复的。
  • 编辑您的问题时,不要删除更改问题上下文的现有文本。如果您有新问题,请打开一个新问题。

标签: php api google-api-php-client


【解决方案1】:

这里的诀窍是它说legacy people api,这通常意味着您正在尝试使用旧的Google+ 范围之一。

Google+ 关闭后,曾经有一部分 google+ api 被移至People api 的与配置文件相关的许多端点。

正如您所调用的端点所见,您正在尝试使用多年前关闭的旧 google+ 端点。

googleapis.com/plus/v1

你应该使用people.get

正确的端点应该是。

GET https://people.googleapis.com/v1/{resourceName=people/*}

人员 API 范围

这些是people api 的新范围。

启用人员 api

您需要做的第一件事是仔细检查客户端 ID 和您正在使用的项目。实际上和你想象的一样。

然后转到 Google cloud console 获取该项目。点击图书馆

在搜索框中搜索人

并选择人员 api

然后点击启用

一旦在与您使用的客户端 ID 相同的项目中启用它,它应该会在几分钟内工作。

PHP 代码

假设您正在关注PHP quick start,类似以下内容应该会给您所需的回复。

 $results = $service->people->get('people/me');

【讨论】:

  • 已经启用 google people api 但没有得到响应
  • 请编辑您的问题并包含您的代码。如果您收到该错误消息,则说明您做错了其他事情或检查了错误的客户端 ID。
  • @Dalmto "googleapis.com/plus/v1/people/me?access_token={$access_token}&key={$app_key}" 这是我的 google api url 这足以解决我的问题
  • 正如我所提到的,您的问题是端点用于 Google+。您应该使用People.get,即people.googleapis.com/v1/people/me。请检查我的anwser上的编辑
  • with "people.googleapis.com/v1/people/me" 这个 url 出现错误 { "error": { "code": 403, "message": "The request is missing a valid API key.", "status" : "PERMISSION_DENIED" } } 你能解释一下什么是 API KEY >
猜你喜欢
  • 1970-01-01
  • 2020-04-21
  • 2020-06-26
  • 2021-04-12
  • 2020-02-27
  • 2020-04-24
  • 2020-03-08
  • 1970-01-01
  • 2018-10-26
相关资源
最近更新 更多