最近的專案需要使用google sign in,因此使用了google_sign_in這個套件。

照著tutorial實作後,卻發現在user sign in後,拿到的idToken是null。

google過後,發現有些人一樣遇到相同問題,但大部分人的解決方法都是在android/build.gradle和/android/app/build.gradle中添加下面的程式碼。

// ..android/build.gradle

dependencies {
    // ... other dependencies
    classpath 'com.google.gms:google-services:4.3.8'
  }
}
// ../android/app/build.gradle

apply plugin: 'com.google.gms.google-services'

參考來源: Getting idToken 'null' when using google_sign_in in Flutter

但照做後發現依然拿不到idToken。

後來發現這個解法僅適用於有使用Firebase的情況,但我的專案並沒有使用Firebase,所以無法解決。於是繼續爬文,就在套件的issue頁面找到了順利解決的方法。

  1. 到你的Google Cloud Console專案中,建立一個空的Web的憑證。
  1. 將上個步驟中複製的clientId,結合下面的語法,貼到android/app/src/main/res/values/strings.xml檔案中(如果沒有這個檔案,就自己建立一個)

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <string name="default_web_client_id">你的client貼在這</string>
    </resources>
    
  2. 在android/app/build.gradle檔案中的dependencies部分,添加下面程式碼。

    implementation 'com.google.android.gms:play-services-auth:20.4.1’