新SignIn認証の認証情報作成方法
Stack Overflowに書かれている「New Google sign in Android」の記事でEric Leschinski氏とKaizieの回答を見てみると、SignIn認証するには、Android用とWebアプリ用に2つのOAuth IDが必要とあります。そして、それは、公式サイトの「Start Integrating Google Sign-In into Your Android App | Google Sign-In for Android | Google Developers」に書かれているとのこと。このサイトも何度か見たのですが、手っ取り早くSignIn認証したかったので、前回はgithubに転がっていたサンプルを流用しました。では、公式サイトに則って、やってみたいと思います。
1.コンフィグレーションファイルの取得
・「GET A CONFIGURATION FILE」ボタンをクリックします。
・「Create or choose an app」ポップアップ画面で「App name」を選択します。
(選択すると、App nameの右側に以下のメッセージが表示されます。
Services will be addes to your existing project in the Google Developers Console.)
・同ポップ画面で、Androidのパッケージ名をフルで入力します。
(例:com.example.package_name)
・入力後、同意画面が表示され、「CONTINUED TO Choose and configure services」ボタンをクリックします。
・「Google Sign-In」画面で、Android用SHA-1認証コードが表示され、一番下の「ENABLE GOOGLE SIGN-IN」ボタンをクリックします。
(SHA-1の情報は、以前keytoolコマンドで生成した値と同じでした)
・「Choose and configuration services」画面で、「CONTINUED TO Generate configuration files」ボタンをクリックします。
・「Download and install configuration」画面で、「file_download」ボタンをクリックし、コンフィグレーションファイルをダウンロードします。ダウンロードしたファイル名は、google-services.jsonです。
(以前、Fusion Tablesの認証情報の作成方法で作成したclient_id.jsonと内容は異なります。)
・Android Studioの左上のタブを「Project」googleに変更し、app-配下にダウンロードしたgoogle-services.jsonをドラッグします。
p.s.
google-services.jsonの内容を見ると確かに2つのclient_idがありました。Stack Overflowの記事と公式サイトの記事をもっと早く見ていたら(^^;ここから後もすんなりいかないんだよなー、きっと。
参照サイト:
New Google sign in Android - Stack Overflow
エミュレータを日本語に変更する方法
SignIn認証に成功
前回、メール認証に成功してから3週間も経過してしまいましたが、本日、SignIn認証に成功しました。下記の参照サイトの1つ目のサイトを参考にコーディングしました。参照サイト中のsign_out_disconnectに関連するコードがないので、sign_out_buttonに置き換えています(というか、間違いだと思われる。UpdateUIにあるのは4種類なので。。。)。また、レイアウトのxmlファイルがないので、自分で補いました。
1.activityの切り換えのコードを追加
MainとなるActivityと参照サイトのIdTokenActivityに以下を追加してます。また、IdTokenActivityの追加により、AndroidManifest.xmlにIdTokenActivityを追加しました。
1.AndroidManifest.xml
<activity
android:name=".IdTokenActivity"
android:label="@string/app_name"
android:theme="@style/AppTheme">
2.MainのActivity
Super.onCreateの下に以下を追加する。
Intent intent = new Intent();
intent.setClassName("com.example.myapplication_test", "com.example.myapplication_test.IdTokenActivity");
this.startActivity(intent);
3.IdTokenActivity
setContentViewの下に以下を追加する。
Intent intent = this.getIntent();
2.バグ修正
このままでは、SignIn認証エラーとなり認証に失敗し、onActivityResultの引数dataのdata.getExtras()に以下のエラーが出力されます。
「{statusCode=unknown status code:12501, resolution=null}」
2つ目の参照サイトから、GoogleSiginInOptionsを修正することにより、SignInに成功しました。
・修正前
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestIdToken(getString(R.string.server_client_id))
.requestEmail()
.build();
・修正後
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestScopes(new Scope(Scopes.PLUS_LOGIN))
.requestScopes(new Scope(Scopes.PLUS_ME))
.build();
実行すると、アカウント選択画面が表示され、アカウントをクリック後、以下の画面が表示されます。
「ALLOW」をクリックすると、「SignedIn」と表示されました。
SignIn認証はクリアしたのですが、FusionTablesの認証は、まだです。道のりはもう少しといったところでしょうか。
参照サイト
google-services/IdTokenActivity.java at master · googlesamples/google-services · GitHub
Nexus5 タッチパネルが効かない ボタンが勝手に押される。
最近、雨が多いですね。スマホは、Nexus5とFone2Laserを使用していますが、本日、雨の中から家に帰ってNexus5を使用しようとすると、一部タッチパネルが効かなくなり、押してもいないボタンが勝手に押されるようになりました。水滴を拭き取ってもだめでしたが、数時間、自然乾燥させたら元に戻りました。傘を差しながら雨の中で使用したことは何度かありますが、こんな現象は初めてだったので、すこし焦りました。
6.0.1アップデート後、クイック設定のアイコン表示方法
Fone2LaserのOSを6.0.1に上げたら、クイック設定のアイコン表示が非表示になりました。検索したところ、テーマの削除でいけるということでしたが、だめ。正確には、ダウンロードしたテーマの削除でした。
1.「テーマ」アプリ実行後、右上の「ダウンロード済み」をクリック。
2.ダウンロードしたテーマを選択後、左下のごみ箱をクリック。
電源オフ・オン、再起動はいりません。
p.s.
昨夜、ZenFone2Laserを落として、ひびが入ってしまいました。ひびの程度ですが、左上2cm角と薄く線のひびが数か所。使い始めて、まだ11か月ですorz。3,4年使用するつもりだったけど、はやまりそう。。。今日は今日で、nanacoカードをコピー機のところに置き忘れて紛失しまい、踏んだり蹴ったりです。
OAuth2 認証方法が変更される
2週間ほど前のことですが、GoogleAuthUtilを使用して、ようやくOAuth2認証が通ったと思ったら、このAPIはもう使用するべきではなく、移植しなさいとのことorz。もう少しで、移植が完了するんですが。。。
参照サイト:
Migrate from GoogleAuthUtil and Plus.API | Google Sign-In for Android | Google Developers
Google API Clientのライブラリの設定方法
Google API Clientのライブラリの設定方法です。設定自体は、それほど難しくありませんが、説明が分かりにくいよ、Googleさん。
1.ダウンロードしたファイルを任意のフォルダで解凍します。
2.解凍フォルダ内のlibsフォルダのファイルを以下のフォルダに移動します。
C:\Users\ログイン名\AndroidStudioProjects\プロジェクト名\app\libs
3.AndroidStudioの左上の「Project」を選択します。
・「app」「libs」配下のファイルを右クリックして、一番下の「Add as Library」を選択します。
・「Create Library」画面では、そのまま「OK」ボタンをクリックします。
4.build.gradleの設定
buil.dgradleの中で、ライブラリ、モジュールなどの依存性(Dependencies)の設定を行います。依存関係は、解凍ファイル内のreadme.html内に記述されています。
上記のlibsのファイルを設定します。
・「File」「Project Structure」をクリックし、「Dependencies」タブを選択します。
・「+」ボタンをクリックし、「Library Dependency」を選択します。
・上記のファイルをそれぞれ選択し、「OK」ボタンをクリックします。
5.AndroidManifest.xmlの編集
AndroidManifest.xmlに以下を追加します。
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.GET_ACCOUNTS"/>
<application
..
<meta-data
android:name="com.google.android.gms.version"
android.value="@integer/google_play_services_version"
以上です。