Я создаю веб-приложение, используя AngularJS, Firebase (SDK v3) и API календаря Google. Я проверяю пользователей с помощью Google OAuth. Моя цель - создать события календаря из узлов базы данных в Firebase. До сих пор мне удалось запросить доступ к календарной рамке с:Использование Firebase Auth для доступа к API календаря Google
_authProvider = new firebase.auth.GoogleAuthProvider();
// Get permission to manage Calendar
_authProvider.addScope("https://www.googleapis.com/auth/calendar");
_fbAuthObject.signInWithRedirect(_authProvider);
Я аутентичность с потоком перенаправлять так перенаправление аутентификации доступен как:
_fbAuthObject.getRedirectResult()
.then(function _readToken(result) {
if (result.credential) {
_googleToken = result.credential.accessToken;
var authHeader = 'Bearer '+ _googleToken;
// Just a test call to the api, returns 200 OK
$http({
method: 'GET',
headers: {
'Authorization': authHeader
},
url: 'https://www.googleapis.com/calendar/v3/users/me/calendarList/primary'
})
.then(function success(response) {
console.log('Cal response', response);
},
function error(response) {
console.log('Error', response);
});
Однако, похоже, вне первоначального входа в систему невозможно получить токен доступа Google через Firebase SDK. Кажется, возможно только получить доступ к токенам Firebase JWT, без использования с API календаря. Я мог бы хранить токен доступа, но это не решило бы проблемы при обновлении токена и т. Д. Есть ли способ получить текущий токен Google Access с Firebase SDK, а если нет, то какие другие решения могут быть решены без для проверки подлинности пользователя дважды?
UPDATE 1:
Похоже someone else has struggled with similar problems with Facebook authentication. В этом вопросе был link to the Firebase documentation, в котором говорится, что аутентификация Firebase больше не сохраняет токен доступа. Итак, как я могу справиться с токеном? На самом деле нет ответа?
UPDATE 2:
Итак, я связался Firebase поддержки с просьбой полнометражного об этой проблеме, и они дали мне следующий ответ:
Спасибо, что нашли время написать нам.
У меня есть ваша точка здесь, это действительно хорошее предложение. Мы определенно знаем, что многие пользователи, такие как вы, хотели бы, чтобы функция OAuth имела доступ к токену при обновлении. Мы изучаем потенциальные решения, но я не могу гарантировать, что это будет доступно в ближайшее время. Тем не менее, мы будем учитывать ваши отзывы. Непрерывное улучшение очень важно для нашего сообщества, поэтому благодарим за это!
Обратите внимание на наши примечания к выпуску для любых дальнейших обновлений.
Так что на данный момент токены доступа недоступны через SDK Firebase. Я все еще пытаюсь найти обходное решение, поэтому, если у кого-то есть идеи относительно правильного решения, я был бы рад услышать их. И, конечно, я отправлю его сюда, если найду рабочее решение самостоятельно.
Я полагаю, что детали необходимо добавить к объекту currentUser, попытались ли вы проверить, что существует в текущем объекте пользователя? 'firebase.auth(). currentUser;' https://firebase.google.com/docs/auth/web/manage-users –
Да, но я, похоже, не могу найти токены Google. Я также попробовал функцию getToken(), но токен Firebase JWT не может использоваться с API Google. – RoniPa
См. Также https://stackoverflow.com/questions/49182671/is-it-possible-to-add-events-to-a-users-google-calendar-via-firebase-server-sid/49183647#49183647 – Kato