Проблемы с использованием Firebase Auth для доступа к API Google через gapi SDK - PullRequest
0 голосов
/ 14 декабря 2018

В моем приложении firebase (Angular) я использую проверку подлинности firebase, чтобы войти в систему через свой профиль Google.В рамках этого процесса пользователь дает мне разрешение на доступ к своей учетной записи gmail (область действия 'https://www.googleapis.com/auth/gmail.compose').

После того, как пользователь вошел в систему таким образом, я хочу настроить gav javascript SDK "gapi", чтобычто «вошедший в систему пользователь» - это пользователь, вошедший через firebase auth.Вот где у меня проблемы.

  1. Похоже, мне нужно установить клиентский токен для gapi sdk, как, например, gapi.client.setToken(userAccessToken), и токен должен быть установлен до того, какгени-клиент инициализируется.Однако попытка сделать это, похоже, не работает (вызов gapi.auth2.getAuthInstance().isSignedIn.get() возвращает false, когда он должен вернуть true).

  2. Я также не могу понять,способ изменить «зарегистрированного пользователя», если пользователь firebase выходит из системы, а новый - в систему. Это потому, что, опять же, клиент gapi требует вызова gapi.client.setToken() перед тем, как клиент будет инициализирован, и я могуЯ не вижу способа использования re-initializing и уже инициализированного гени-клиента.

Я могу заставить работать гени-клиент, если использую собственный метод gapi.auth2.getAuthInstance().signIn() клиента гапзи, но затем пользовательпредлагается дважды войти в мое приложение, используя (с точки зрения пользователя) идентичные всплывающие окна входа в Google (одно приглашение от firebase auth, а другое от клиента gapi).

Есть ли у кого-нибудь какие-либо предложения / советы?После того, как кто-то войдет через firebase auth, я смогу получить доступ к его userAccessToken, но я просто не могу понять, как программным образом передать это клиенту gapi чистым способом.

В идеале:

  • при загрузке приложения клиент gapi также будет загружаться и инициализироваться.
  • Когда пользователь решит войти в систему, я смогу использовать Firebase Auth для входа в систему через свой профиль Google,затем получите свой токен доступа и передайте его клиенту gapi для выполнения вызовов API Google.
    • Если пользователь firebase когда-либо выходил из системы, я очищал бы токен api клиента gapi.
    • Если входил новый пользователь firebase, я бы заново устанавливал токен api клиента gapi.

1 Ответ

0 голосов
/ 06 января 2019

Я наткнулся на заполнитель (то есть неидеальное) решение этой проблемы, после этого ответа SO .

Короче говоря, клиент GAPI, похоже, не позволяет вручную передавать ему токен доступа, но клиент аутентификации firebase действительно позволяет вам вручную передать ему токен доступа.Таким образом, вместо обработки аутентификации с помощью Firebase SDK и передачи токена клиенту GAPI, вам необходимо выполнить обратную процедуру и обработать аутентификацию с помощью клиента GAPI, а затем передать токен в Firebase SDK.

...