GoogleAPI с учетной записью Google - PullRequest
6 голосов
/ 30 апреля 2020

Я реализовал вход в Google с помощью firebase auth в своем приложении. Я пытаюсь реализовать GmailAPI с помощью входа в аккаунт Google, но не смог найти что-либо, касающееся их обоих вместе. Я слежу за https://github.com/dart-lang/googleapis/blob/master/generated/googleapis/lib/gmail/v1.dart и реализовал это в коде

final FirebaseAuth _auth = FirebaseAuth.instance;
final GoogleSignIn googleSignIn = GoogleSignIn(
  scopes: [
      "https://www.googleapis.com/auth/gmail.compose",
      "https://www.googleapis.com/auth/gmail.insert",
      "https://www.googleapis.com/auth/gmail.labels",
      "https://www.googleapis.com/auth/gmail.metadata",
      "https://www.googleapis.com/auth/gmail.modify",
      "https://www.googleapis.com/auth/gmail.readonly",
      "https://www.googleapis.com/auth/gmail.send",
      "https://www.googleapis.com/auth/gmail.settings.basic",
      "https://www.googleapis.com/auth/gmail.settings.sharing",
    ]
);

Нужна ли пользователю аутентификация после этого или uid, сгенерированный с этим, будет достаточно для аутентифицировать пользователя? Повсюду в Интернете с примерами googleAPI пользователь проходит аутентификацию в Интернете, и я ничего не могу найти с помощью google sign in.

1 Ответ

0 голосов
/ 09 мая 2020

Я не эксперт по флаттеру, но на основании найденных примеров здесь Единственное, что вам нужно для аутентификации для программной базы, это token_id и access_token, например, так:

final AuthCredential credential = GoogleAuthProvider.getCredential(
    accessToken: googleAuth.accessToken,
    idToken: googleAuth.idToken,
  );

В соответствии с этим, для аутентификации в базе данных Firebase вам просто нужно добавить области входа в систему: 'email', 'profile' and 'openid' или области действия: 'https://www.googleapis.com/auth/userinfo.email', 'https://www.googleapis.com/auth/userinfo.profile' and 'openid' (обычно они совпадают в зависимости от используемой библиотеки). Затем с помощью полученного токена доступа вы можете использовать библиотеку firebase для аутентификации в firebase без повторной аутентификации. Дайте мне знать, если вам нужна дополнительная информация.

Редактировать:

Вы должны найти токен доступа, полученный Google, войти и передать информацию для входа в Firebase. Маркер доступа должен выглядеть примерно так. как это:

{
        "access_token": "ya29.a0Adw1xekVMTQRK0_EAdr1PfiOS97Lnz-VCLTJHw7...",
        "expires_in": 3599, 
        "refresh_token": "1//01iBd1CQsBUl2CgYIARAA...", 
        "scope": "https://www.googleapis.com/auth/userinfo.email openid", 
        "token_type": "Bearer", 
        "id_token": "eyJhbGciOiJSUzI1NiIsImtpZCI6IjE31ZmY0ZTEwOTkxZDZiMGA..."
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...