В настоящее время я использую аутентификацию firebase для проверки подлинности веб-приложения с помощью поставщика Google. Я хотел бы интегрировать API Google People, чтобы я мог заполнять детали для новых пользователей из их учетных записей Google.
Это мой код в интерфейсе, который обрабатывает имя входа:
export async function handleGoogleLogin() {
var provider = new firebase.auth.GoogleAuthProvider();
provider.addScope('profile');
await firebase
.auth()
.signInWithPopup(provider)
.then(async function(result) {
let token = (<any>result).credential.accessToken
...
Это отправляет токен бэкэнд-API, который пытается получить информацию как таковую с помощью пакета googleapis:
const people = google.people({
version: 'v1',
auth: createDto.oAuthToken
})
const res = await people.people.get({
resourceName: 'people/me',
personFields: 'emailAddresses, names'
})
...
Когда я go до https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=REDACTED, Я вижу, что мне предоставлены правильные области действия.
{
"issued_to": "REDACTED",
"audience": "REDACTED",
"user_id": "REDACTED",
"scope": "openid https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile",
"expires_in": 3563,
"email": "REDACTED",
"verified_email": true,
"access_type": "online"
}
Однако выходные данные конечной точки, запрошенные API Google, возвращают следующее:
https://people.googleapis.com/v1/people/me?personFields=emailAddresses%2C%20names&key=REDACTED
{
"error": {
"code": 400,
"message": "API key not valid. Please pass a valid API key.",
"status": "INVALID_ARGUMENT",
"details": [
{
"@type": "type.googleapis.com/google.rpc.Help",
"links": [
{
"description": "Google developers console",
"url": "https://console.developers.google.com"
}
]
}
]