# 🙋🏻‍♀️ Firebase: Google Login * [**Google Cloud Console**](https://console.cloud.google.com/welcome) * [**Firebase 網站**](https://firebase.google.com/) * 套件: * [**google_sign_in**](https://pub.dev/packages/google_sign_in) :::success ## 參考教學 * [**【Flutter基礎概念與實作】 Day10–Firebase與Bloc Design Pattern**](https://ithelp.ithome.com.tw/articles/10217950) * [**Flutter — Google Sign In using firebase authentication**](https://medium.com/@dev.lens/flutter-google-sign-in-using-firebase-authentication-step-by-step-ef2ddfb84a2c) * [**Flutter Firebase Auth Login| Google Sign In | Android & iOS** ( youtube 影片)](https://www.youtube.com/watch?v=hgRg9RFvNJQ) ::: ## 申請 * 要先建立專案 * 建立完專案後,點選對應的 icon ![image](https://hackmd.io/_uploads/BykX2p_uT.png =200x),建立應用程式。 ### 1. Android app * 提供 `SHA-1`:獲取方式參考 [**官方文件**](https://developers.google.com/android/guides/client-auth?hl=zh-tw) * debug mode: ``` keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android ``` * release: ``` keytool -list -v -keystore XXX.jks -alias XXX ``` :::warning 每個裝置的 SHA-1 憑證不一樣,debug 時生成的 `debug.keystore` 也會不一樣,需要都加入。(ps:~~暴力解是直接丟你的 `debug.keystore` 給別人,但不要上傳至公開的專案裡!~~) ::: * 下載 `google-service.json` 並加入 `/android/app` 底下 * `buildscript` 寫法請參考 [**官方教學**](https://firebase.google.com/docs/android/troubleshooting-faq?authuser=2&_gl=1*1dppus1*_ga*MTcyMzMzMDA0Ni4xNzA0NDM5NjU1*_ga_CW55HF8NVT*MTcwNDc2MzY2MC43LjEuMTcwNDc2NDIyNC41OC4wLjA.#groovy),請改成在專案根目錄下的 `/android/build.gradle` 內加入: ```javascript dependencies { // ... classpath 'com.google.gms:google-services:4.4.0' } ``` :::warning 是 `com.google.gms:google-services`,不是 `com.google.gms.google-services`! ::: * `/android/app/build.gradle` 內照原說明加入: ```javascript plugins { id 'com.android.application' // Add the Google services Gradle plugin id 'com.google.gms.google-services' ... } dependencies { // Import the Firebase BoM implementation platform('com.google.firebase:firebase-bom:32.7.0') // TODO: Add the dependencies for Firebase products you want to use // When using the BoM, don't specify versions in Firebase dependencies implementation 'com.google.firebase:firebase-analytics' // Add the dependencies for any other desired Firebase products // https://firebase.google.com/docs/android/setup#available-libraries } ``` ### 2. iOS app * 下載 `GoogleService-info.plist` 並加入 `/iOS/Runner` 底下 * 到 XCode > Info > URL Types 內加入([**參考**](https://medium.com/彼得潘的-swift-ios-app-開發教室/google登入異常-db3e41c41410)): ![image](https://hackmd.io/_uploads/SkAbnUJ9p.png) ## 安裝 packages ``` flutter pub add firebase_auth flutter pub add google_sign_in ```