403消息:Legacy People API未在项目中使用

时间:2019-10-31 14:06:05

标签: c# asp.net google-api

Google API已激活,但给出了错误; 旧版People API之前尚未在项目中使用过,或者已被禁用。通过访问https://console.developers.google.com/apis/api/legacypeople.googleapis.com/overview?project=启用它,然后重试。如果您最近启用了此API,请等待几分钟,以便该操作传播到我们的系统并重试。

8 个答案:

答案 0 :(得分:16)

除了Google+ API外,您不需要安装其他任何API,例如Google Drive API,Google Sheets API或其他

由于“ passport-google-oauth”:“ ^ 1.0.0”

,该错误即将到来

只需将版本“ passport-google-oauth”:“ ^ 1.0.0”更改为“ passport-google-oauth”:“ ^ 2.0.0”,然后删除node_modules和package.lock.json文件并运行“ npm”我”

就这样

答案 1 :(得分:2)

Google+ API Shutdown于2019年3月7日之前,people.get和people.getOpenIdConnect方法可用于请求人员的个人资料。

为避免使用支持登录的这些方法破坏现有的集成,如果用户授权,新的最小实现仅返回该功能所需的基本字段,例如姓名和电子邮件地址。 Legacy People API是这些方法将在现有HTTP端点上为现有调用方保留的方法。

Legacy People API为旧版Google+ API的有限新实现提供了服务,这是维护登录功能所必需的people.get和people.getOpenIdConnect方法。现有的原始方法调用者可以在Google+ API关闭时将其迁移到Google Sign-inGoogle People API等推荐的替代方法中。

enter link description here

谢谢

答案 2 :(得分:1)

在这种情况下,我面临着同样的问题。这是我为修复它所做的。

情况:

  • NodeJS版本8
  • “ passport-google-oauth”:“ ^ 1.0.0”
  • 使用Google+ API作为Google登录

当我运行应用程序并单击“使用Google登录”时,发生了什么事?

我如何解决?

  • 转到Google控制台
  • 单击“社交API”下的Google+ API,然后单击“启用API”
  • 点击G Suite下的Google Drive API,然后点击Enable API
  • 点击G Suite下的Google Sheets API,然后点击启用API
  • 将“ passport-google-oauth”:“ ^ 1.0.0”更新为“ passport-google-oauth”:“ ^ 2.0.0” 在package.json中
  • 删除package-lock.json和node_modules文件夹(以确保所有内容都清晰可见)
  • 运行此命令:npm install
  • 现在可以使用!

注意:我以前的代码仍然使用profile._json.image.url来获取配置文件图像。实际上,此响应不再存在。所以我删除了这段代码。 再见Google+ 谢谢Google People API。

答案 3 :(得分:0)

启用Google Contacts API和Google+ API可以为我解决此问题。

答案 4 :(得分:0)

您好,我最近对同一问题感到沮丧。如Ilan Laloum所述,Google + API已完全停用新项目。

我发现 Google People API 的工作方式类似。以下示例基于GCP中的书架教程。可以在此处查看源代码:https://github.com/GoogleCloudPlatform/golang-samples/tree/appengine/go111/cloudsql/getting-started/bookshelf(分支appengine/go111/cloudsql

import people "google.golang.org/api/people/v1"

...

// retrieves the profile of the user associated with the provided OAuth token
func fetchProfile(ctx context.Context, tok *oauth2.Token) (*people.Person, error) {
peopleService, err := people.NewService(ctx, option.WithTokenSource(bookshelf.OAuthConfig.TokenSource(ctx, tok)))
if err != nil {
    return nil, err
}

return peopleService.People.Get("people/me").
    PersonFields("names,coverPhotos,emailAddresses").
    Do()
}

此方法需要上下文和OAuth令牌,就像以前的Google+ API一样。 peopleService以类似的方式初始化。

peopleService.People.Get("people/me")将准备一个查询,以获取所连接用户的个人资料。然后PersonFields("names,coverPhotos,emailAddresses")是配置文件字段的过滤器。请求的这一部分是强制性的。最终Do()将执行请求。

答案 5 :(得分:0)

可以使用passport-google-token

解决此问题

npm install passport-google-token

const GoogleStrategy = require('passport-google-token').Strategy;

// Google OAuth Strategy
passport.use('googleToken', new GoogleStrategy({
    clientID: CLIENT_ID,
    clientSecret: CLIENT_SECRET
}, async (accessToken, refreshToken, profile, done) => {
    try {
        console.log('creating a new user')
        const newUser = new User({
            google: {
                id: profile.id,
                email: profile.emails[0].value
            }
        });

        await newUser.save();
        done(null, newUser);
    } catch (error) {
        done(error, false, error.message);
    }
}));

答案 6 :(得分:0)

我也遇到了同样的问题,但是我的Rails应用却出现了。因此,我通过在终端上运行bundle update devise omniauth omniauth-google-oauth2来升级omniauth gem,从而解决了该问题。

答案 7 :(得分:0)

我也遇到了同样的问题。使用旧库、为您的项目启用 google people Api 并根据您的 php 版本从此 link 下载库并集成它时可能会出现此问题。