Неавторизованный клиент в Google App Engine - PullRequest
0 голосов
/ 21 мая 2018

Мы используем Google App Engine для размещения кода на стороне сервера и веб-приложения.Сервер используется для обработки Google Auth и доступа к календарям.Он использует поток аутентификации на стороне сервера, генерируя токен авторизации от клиента и отправляя его на сервер для обмена на токены.

Это хорошо работает при запуске нашего клиента с нашего локального хоста, но когда мы запускаем через тот же потокпри использовании живого клиента появляется ошибка unauthorised_client.

Мы объявили домены как на стороне сервера, так и на стороне клиента в разделе учетных данных, используя как пользовательские домены, так и изначально созданные пути Google App Engine.

Код на стороне сервера с использованием экспресс.Очевидно, мы отключили наши клиентские ключи.

var express = require('express');
var router = express.Router();
const {google} = require('googleapis');

router.post('/', function(req, res, next) {
const oauth2Client = new google.auth.OAuth2(
    "CLIENT_ID",
    "CLIENT_SECRET",
    "postmessage"
);

var code = req.body.code
var userId = req.body.userId
oauth2Client.getToken(code).then(resp => {
if (resp.tokens) {
  let tokens = resp.tokens
  res.json({status: "success"})
} else {
  res.json({status: "failed"})
}
}).catch(error => {
console.log(error)
res.json({status: "failed", error: error.message})
})
})

module.exports = router;

Код на стороне клиента: Angular 5+ ng-gapi для загрузки API Google.

public getGoogleAuth(): Promise<any> {
return new Promise(resolve => {
  this.googleAuth.getAuth().subscribe(auth => {
    resolve(auth)
  })
});
}

async googleSignIn() {
try {
  let auth = await this.getGoogleAuth()
  let { code } = await auth.grantOfflineAccess({
    'redirect_uri' : 'postmessage',
    scope: "https://www.googleapis.com/auth/calendar.readonly https://www.googleapis.com/auth/calendar"
  })
} catch(error) {
  console.log(error)
  return Promise.reject(error);
}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...