50ぱーせんとおふ
JAVAとかWEB開発まわりのいろいろ
RSS
3月2920182018-03-292018-03-29NoCommentby まし

FlutterでGoogle_Sign_in

Posted in Android, Dart, Firebase, Flutter

ポイントだけ簡単に。

  • codelabsにflutterでfirebase使うチュートリアルがあるんだけども、プラグインがかなりバージョンアップして(0.3.1 -> 3.0.0)少し使い方なんかも変わったよう。
  • https://codelabs.developers.google.com/codelabs/flutter-firebase/
  • codelabsのチュートリアルcloneしてきて動かそうとすると罠にハマりやすいので新規プロジェクトでやったほうがやりやすそう。
  • ということで簡単にまとめてみた。
  • とりあえずAndroidだけ

Firebaseコンソールにてアプリ登録

  • アプリの登録を行う
  • アプリのpackage名だけじゃなくてハッシュを登録することを忘れないこと
  • keystoreファイルからSHA1を確認する。デバッグであれば→ハッシュ確認方法
  • 次のステップでgoogle-services.jsonファイルをダウンロードできるので、プロジェクトに追加する
  • 場所は[project directory] > android > app > google-services.json
  • 次のステップで指示されるbuild.gradleの追記はgoogle_sign_inを使うだけなら必要なし。analytics等firebaseの他の機能を使う場合は指示通り追記

FirebaseコンソールにてAuthenticationを有効化

  • Develop > Authentication
  • ログイン方法 > プロバイダ にて好きな認証方法を有効にする(例えばgoogleアカウントでのログイン)
  • プロバイダの横に有効となればok

Flutter Plugin [google_sign_in]を追加

...

dependencies:
  flutter:
    sdk: flutter

  google_sign_in: ^3.0.0#←を追加

...
...
import 'package:google_sign_in/google_sign_in.dart';//importに追加
...

コード

//Stateなどのプロパティに初期化し追加
GoogleSignIn _googleSignIn = new GoogleSignIn(
  scopes: [
    'email',
    'https://www.googleapis.com/auth/contacts.readonly',
  ],
);
//Stateなどのプロパティに追加、初期化
GoogleSignIn _googleSignIn = new GoogleSignIn(
  scopes: [
    'email',
    'https://www.googleapis.com/auth/contacts.readonly',
  ],
);
//サインインしていない場合にサインインを試みる関数を追加
//Silentlyは前回のログイン情報でログインできる場合にダイアログ無しで自動ログインを試みる
//googleSignIn.singIn();でサインインダイアログが出る。
Future<Null> _ensureLoggedIn() async {
  GoogleSignInAccount user = _googleSignIn.currentUser;
  if (user == null)
    user = await _googleSignIn.signInSilently();
  if (user == null) {
    await _googleSignIn.signIn();
  }
}
//ユーザー情報の取得の仕方
_googleSignIn.currentUser.photoUrl
_googleSignIn.currentUser.displayName
_googleSignIn.currentUser.email
//など。

すごく雑な使用例

child: new Column(
  children: <Widget>[
    new Container(
      child: (_googleSignIn.currentUser != null)?new CircleAvatar(
        backgroundImage:
          new NetworkImage(_googleSignIn.currentUser.photoUrl)
      ): new Text("no login")
    ),
    (_googleSignIn.currentUser != null)?
      new Text(_googleSignIn.currentUser.displayName)
      : new Text("no name")
    ,
    (_googleSignIn.currentUser != null)?
      new Text(_googleSignIn.currentUser.email)
      : new Text("no email")
  ],
)

....

floatingActionButton: new FloatingActionButton(
  onPressed: ()async{await _ensureLoggedIn(); setState((){});},
  child: new Icon(Icons.add),
),
     


トラブルシューティング!

  • 起動しない!
    • build.gradleにしなくていい追記をした可能性。firebaseから指示されるbuild.gradleの変更はしなくてよい。
  • _googleSignIn.signIn();を呼び出したあとにエラー発生
    • firebaseに登録したアプリのpackage名とandroidアプリのpackage名が一致してるか再確認
    • firebaseに登録したハッシュ(SHA1 or SHA256)は現在起動してるAPKの署名のものと一致してるか確認
    • デバッグモードでも署名は必要
Tags:google_sign_in

トラックバックURL  -  http://mashi.exciton.jp/archives/310/trackback


Previous Post
Next Post


コメントを残す コメントをキャンセル

メールアドレスが公開されることはありません。

トラックバックURL  -  http://mashi.exciton.jp/archives/310/trackback

Previous Post
Next Post

  • 最近の投稿

    • Firebase Analytics for Flutter
    • FlutterでGoogle_Sign_in
    • Android開発時のAPKも実はしっかりと署名されてたりする
    • FlutterのState, StatefulWidget, setState()について
    • SSH秘密鍵のSSH-AGENTをつかった管理ベストプラクティスを考えてみた
  • カテゴリー

    • Android
    • Dart
    • Firebase
    • Flutter
    • Linux
    • Play Framework
    • Scala
    • Slick
    • サーバー
    • 未分類
    • 洗濯表示
  • タグ

    AddkeysToAgent AlermManager AlertManager Analytics android AndroidTest autoincrement AWS community版 Crashlytics GAE GooglePlatform google_sign_in intellij intellij IDEA JUnit4 PendingIntent Play Framework Scala slick ssh ssh-add ssh-agent Timer UIThread wordpress アプリ ゴミ収集日 マテリアルデザイン 洗濯表示 秘密鍵 論理削除
  • 最近のコメント

    • Android開発時のAPKも実はしっかりと署名されてたりする に FlutterでGoogle_Sign_in | 50ぱーせんとおふ より
    • SSH秘密鍵のSSH-AGENTをつかった管理ベストプラクティスを考えてみた に SSH秘密鍵のSSH-AGENTをつかった管理ベストプラクティスを考えてみた | IT技術情報局 より
    • AndroidをUnitTestする に ゴミ収集日 | 50ぱーせんとおふ より
    • PendingIntentとAlermManager に ゴミ収集日 | 50ぱーせんとおふ より
    • AndroidのUIスレッドTimer に ゴミ収集日 | 50ぱーせんとおふ より
  • アーカイブ

    • 2018年3月
    • 2016年11月
    • 2015年12月
    • 2015年9月
    • 2015年5月
    • 2015年4月
    • 2015年1月
  • Profile

    Author : まし
    mashi@exciton.jp

    WEBアプリケーション、Androidアプリあたりを主食にしてるフリーランスSE。
    一人で開発してることが多いです。
    Linuxサーバー構築やウェブ周辺のこまごましたことなんかもやってます。

    ブログの方はハンブンくらいな気持ちでゆるくやらせていただこうと思います。

    なかよくしてるものリスト
    JAVA, JavaScript, jQuery, python, PHP
    Wicket, Spring, Play Framework, CakePHP
    Android
    VPS, CentOS, VIM
Copyright © 2025 exciton.jp.