Google API已启用,但给出了错误;旧版People API之前尚未在项目中使用过,或者已被禁用。通过访问https://console.developers.google.com/apis/api/legacypeople.googleapis.com/overview?project=启用它,然后重试。如果您最近启用了此API,请等待几分钟,以便该操作传播到我们的系统并重试。
Google API已启用,但给出了错误;旧版People API之前尚未在项目中使用过,或者已被禁用。通过访问https://console.developers.google.com/apis/api/legacypeople.googleapis.com/overview?project=启用它,然后重试。如果您最近启用了此API,请等待几分钟,以便该操作传播到我们的系统并重试。
Answers:
您不需要安装其他任何API,例如Google Drive API,Google Sheets API或Google+ API以外的其他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 i”
而已
passport-google-oauth20@1.0.0
,因此2.0
在阅读您的答案后便将其删除并安装了该版本,并且可以正常工作。
在2019年3月7日Google+ API关闭之前,people.get和people.getOpenIdConnect方法可用于请求人员的个人资料。
为了避免使用支持登录的这些方法破坏现有的集成,如果用户授权,新的最小实现仅返回该功能所需的基本字段,例如名称和电子邮件地址。Legacy People API是这些方法将在现有HTTP端点上的现有调用方仍然可用的地方。
旧版People API为旧版Google+ API的有限新实现提供了服务,这是维护登录功能所必需的people.get和people.getOpenIdConnect方法。Google+ API关闭时,尚未迁移到建议的替代方法(例如Google Sign-in或Google People API)的现有调用方可以使用它。
谢谢
在这种情况下,我面临着同样的问题。这是我为修复此问题所做的工作。
情况:
当我运行应用程序并单击“使用Google登录”时,发生了什么?
我该如何解决?
注意:我之前的代码仍然使用profile._json.image.url来获取配置文件图像。实际上,此响应不再存在。所以我删除了这段代码。再见Google+,谢谢Google People API。
There was an error while loading /apis/api/legacypeople.googleapis.com/overview?project=xxxx. Please try again.
启用Google Contacts API和Google+ API可以解决此问题。
嗨,我最近对同一个问题之以鼻。如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()
将执行请求。
可以使用 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);
}
}));