Google API가 활성화되었지만 오류가 발생했습니다. 레거시 피플 API는 프로젝트에서 사용되지 않았거나 비활성화되었습니다. https://console.developers.google.com/apis/api/legacypeople.googleapis.com/overview?project= 를 방문하여 사용하도록 설정 한 다음 다시 시도하십시오. 최근에이 API를 활성화 한 경우 몇 분 동안 작업이 시스템에 전파되어 다시 시도 될 때까지 기다리십시오.
답변
Google 드라이브 API, Google 스프레드 시트 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”를 실행하십시오.
그게 다야
답변
전과 의 Google+ API 종료2019 년 3 월 7 일 people.get 및 people.getOpenIdConnect 메소드를 사용하여 개인의 프로파일을 요청할 수있었습니다.
로그인을 지원하는 이러한 방법과의 기존 통합을 방해하지 않기 위해 새로운 최소 구현은 사용자가 승인 한 경우 이름 및 전자 메일 주소와 같은 해당 기능에 필요한 기본 필드 만 반환합니다. 레거시 피플 API는 기존 HTTP 엔드 포인트에서 기존 호출자가이 메소드를 계속 사용할 수있는 곳입니다.
레거시 피플 API는 로그인 기능을 유지하는 데 필요한 레거시 Google+ API people.get 및 people.getOpenIdConnect 메소드의 제한된 새로운 구현을 제공합니다. Google Sign-in 또는 Google People API 와 같은 권장 대체로 마이그레이션되지 않은 원래 메소드의 기존 발신자에게 제공됩니다.Google+ API 종료시 .
감사
답변
이 경우 동일한 문제에 직면하고 있습니다. 이것이 내가 고치기 위해 한 일입니다.
상태:
- NodeJS 버전 8
- “passport-google-oauth”: “^ 1.0.0”
- Google+ API를 Google 로그인으로 사용
앱을 실행하고 Google에 로그인을 클릭하면 어떻게됩니까?
- 서버 오류
- 오류 로그 : 레거시 People API가 “xxxx”프로젝트에서 사용되지 않았거나 비활성화되었습니다. https://console.developers.google.com/apis/api/legacypeople.googleapis.com/overview?project=xxxx 를 방문하여 사용하도록 설정 한 다음 다시 시도하십시오.
어떻게 해결합니까?
- Google 콘솔로 이동
- 소셜 API에서 Google+ API를 클릭 한 다음 API 사용을 클릭하십시오.
- G Suite에서 Google Drive API를 클릭 한 다음 API 사용을 클릭하십시오.
- G Suite에서 Google 스프레드 시트 API를 클릭 한 다음 API 사용을 클릭합니다.
- package.json에서 “passport-google-oauth”: “^ 1.0.0″을 “passport-google-oauth”: “^ 2.0.0″으로 업데이트
- package-lock.json 및 node_modules 폴더를 제거하십시오 (모든 것이 명확하도록)
- 이 명령을 실행하십시오 : npm install
- 지금 작동합니다!
참고 : 이전 코드는 여전히 profile._json.image.url을 사용하여 프로필 이미지를 얻습니다. 실제로이 응답은 더 이상 존재하지 않았습니다. 이 코드를 삭제합니다. 안녕히 Google+ 감사합니다. Google People API.
답변
Google 주소록 API 및 Google+ API를 사용 설정하면이 문제가 해결되었습니다.
답변
안녕하세요, 최근에 같은 문제에 대해 고민했습니다. Ilan Laloum이 설명했듯이 Google+ API는 새로운 프로젝트를 위해 완전히 폐기되었습니다.
Google People API 가 비슷한 방식으로 작동 한다는 것을 알았 습니다. 다음 예는 GCP 의 책장 자습서를 기반으로합니다 . 소스 코드는 여기에서 볼 수 있습니다 : https://github.com/GoogleCloudPlatform/golang-samples/tree/appengine/go111/cloudsql/getting-started/bookshelf (branch 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()
}
이 방법에는 Google+ API와 마찬가지로 컨텍스트와 OAuth 토큰이 필요합니다. 그만큼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);
}
}));