Как получить информацию о сфере действия аутентифицированных пользователей Google, используя неявный поток angular dart auth_browser - PullRequest
0 голосов
/ 18 ноября 2018

Я пытаюсь следовать этому дартсу + авторизации Google, начиная с (https://github.com/dart-lang/googleapis_auth), но мне трудно найти похожие вызовы javascript sdk kit (https://developers.google.com/api-client-library/javascript/samples/samples#authorizing-and-making-authorized-requests)

Что такое эквивалент isSignedIn, и как вы получаете доступ к запрашиваемым сведениям о области действия, например, к профилю пользователя / информации электронной почты?

Я думал, что это можно сделать, позвонив в API пользователя, но не смог

import 'package:angular/angular.dart';

import 'package:googleapis_auth/auth_browser.dart' as authBrowser;
import 'package:googleapis_auth/auth.dart' as auth;
import 'dart:developer';

@Injectable()
class AuthService {

  static final _clientId = "hidden-.apps.googleusercontent.com";
  static final _secret = "";
  final List<String> _googleScopes = ["email","profile", "openid"];

  static final _identifier = new authBrowser.ClientId(_clientId, _secret);

   signIn(event)  {
     return authBrowser
     .createImplicitBrowserFlow(_identifier, _googleScopes)
     .then((authBrowser.BrowserOAuth2Flow flow) {
        debugger();
       flow
          .clientViaUserConsent()
          .then((auth.AutoRefreshingAuthClient client) {

              final _test = await client.get(
              'https://people.googleapis.com/v1/people/me', 
            ); //returns 403 error, and subsequent no authorization header present

            print(client);
        });
     });
   }
}

Редактировать: я действительно хотел добавить документацию: «Теперь аутентифицированный HTTP-клиент может получить доступ к данным от имени пользователя для запрошенных областей oauth2», но я не вижу, как это достигается.Цель - просто проверить, вошел ли пользователь, и захватить его адрес электронной почты, с которым он вошел.

Редактировать 2: Мне удалось немного поверить, и я попытался это сделать, чтобы создать нового клиента PeopleApi., но затем это выдает две ошибки:

dart_sdk.js: 15886 Отказано в установке небезопасного заголовка "user-agent" dart_sdk.js: 15886 Отказ в установке небезопасного заголовка "content-length"

flow
      .clientViaUserConsent()
.then((auth.AuthClient client) async {

        debugger();

        await new PeopleApi(client).people
        .get('people/me', personFields: 'coverPhotos,emailAddresses')
        .then( (Person person) {
          print(person);
        });
...