簡體   English   中英

google_sign_in Flutter 插件總是返回 null serverAccessCode

[英]google_sign_in Flutter plugin always returns null serverAccessCode

我有當前的身份驗證工作流程

  1. 用戶通過 google OAuth2 登錄
  2. 然后給用戶一個 server_auth_code,他們將其發送到我的后端身份驗證
  3. 驗證碼在后端進行驗證,並向用戶發送 JWT

我用 Android SDK 在原始 Java 中完成了這一切,但 Flutter 似乎要好得多。 但是現在在 android 上使用google_sign_in插件時,我無法再檢索 serverAuthCore,這個插件只想一直返回 null。

我正在使用為 Android 指定的客戶端 ID,但是,我也測試了由 google 自動生成的 WebApplication,但這是同樣的問題(Null serverAutHCode)

這是我目前正在使用的代碼:

/// Provides the `GoogleSignIn` class
import 'package:google_sign_in/google_sign_in.dart';

class GoogleLoginPage extends StatefulWidget {

  final String name = "Logging in with google.";

  late GoogleSignIn _googleSignIn;

  GoogleLoginPage() : super() {
    _googleSignIn = GoogleSignIn(
        scopes: ['https://www.googleapis.com/auth/userinfo.email',
        'https://www.googleapis.com/auth/userinfo.profile'],
        serverClientId: "XX-XXX.apps.googleusercontent.com"
    );
  }

  Future<void> fetchAuthToken() async {
    try {
      var response = await _googleSignIn.signIn();
      log(response?.serverAuthCode ?? "No server auth code");
      _googleSignIn.signOut();
    } catch (error) {
      print("ERR");
      print(error);
    }
  }

  @override
  State<GoogleLoginPage> createState() => GoogleLoginState();

}

這段代碼的輸出是: [log] No server auth code

問題:

難道我做錯了什么? 如前所述,這在我使用 google play services SDK 的 java 項目上 100% 有效,所以我知道這與我的 google 控制台配置無關。

好的,所以我發現了問題:

似乎默認情況下,用於顫振的谷歌登錄插件來自舊版本(如果我沒記錯的話它是 20.0.5)

我只是將版本更改為最新版本:

'com.google.android.gms:play-services-auth:20.2.0'

您可以通過編輯項目的 build.gradle 來做到這一點(在 IntelliJ 中,您打開 build.gradle 並單擊右上角的“在 android studio 中打開以進行編輯”,從那里您需要找到 google_sign_in 的 gradle 文件,然后更改在那里導入,記得在關閉之前點擊android studio右上角的同步)

我開始正常接收我的 serverAuthCode,干杯!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM