如何在Google中进行身份验证以在Flutter上使用YouTube API?

时间:2019-07-16 01:26:41

标签: flutter google-api google-signin

我正在编写一个将使用Youtube API创建和修改用户播放列表的应用程序,我已经配置了GCP端,并且在我的代码中,我正在使用google_sign_in包来验证用户身份,但是要使用此API我需要的功能,我需要一些敏感的范围(youtube.force-ssl,youtube和youtube.readonly)。在Google上配置的所有内容。但是我无法在该应用上进行身份验证,当我启动登录提示时,它会询问我google用户,此后,它将永远加载并且不显示授予权限的屏幕。有什么事吗我做对了还是错过了什么?

这是我的登录代码:

import 'package:google_sign_in/google_sign_in.dart';
import 'package:http/http.dart' show BaseRequest, Response, StreamedResponse;
import 'package:http/io_client.dart' show IOClient;

class GoogleHttpClient extends IOClient {
  Map<String, String> _headers;

  GoogleHttpClient(this._headers) : super();

  @override
  Future<StreamedResponse> send(BaseRequest request) =>
      super.send(request..headers.addAll(_headers));

  @override
  Future<Response> head(Object url, {Map<String, String> headers}) =>
      super.head(url, headers: headers..addAll(_headers));
}

GoogleSignIn _googleSignIn = GoogleSignIn(
  scopes: [
    'https://www.googleapis.com/auth/youtube',
    'https://www.googleapis.com/auth/youtube.force-ssl',
    'https://www.googleapis.com/auth/youtube.readonly',
  ],
);

var _authHeaders;
var _httpClient;

Future<void> signIn() async {
  try {
    await _googleSignIn.signIn();
    _authHeaders = _googleSignIn.currentUser.authHeaders;
    _httpClient = GoogleHttpClient(_authHeaders);
  } catch (error) {
    print(error);
  }
}

函数signIn()由一个按钮调用。

这是登录提示,我可以选择我的帐户

Login Prompt

但是在它永远保持这种状态之后……

Loading error

0 个答案:

没有答案