gaggitのブログ

コーディング、ガジェット、TIPS関連、FX

新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」ボタンをクリックします。

f:id:gaggit:20160919203745p:plain

・「Google Sign-In」画面で、AndroidSHA-1認証コードが表示され、一番下の「ENABLE GOOGLE SIGN-IN」ボタンをクリックします。

 (SHA-1の情報は、以前keytoolコマンドで生成した値と同じでした)

f:id:gaggit:20160919203808p:plain

・「Choose and configuration services」画面で、「CONTINUED TO Generate configuration files」ボタンをクリックします。

f:id:gaggit:20160919203846p:plain

・「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

Start Integrating Google Sign-In into Your Android App  |  Google Sign-In for Android  |  Google Developers

 

エミュレータを日本語に変更する方法

一昨日、ようやくSignIn認証できたのですが、単純に成功したってだけで、本当に使用する方法として、まだまだです。今日は、ちょっとコーヒーブレイクで、adbコマンドを使用して、エミュレータの言語を日本語に変更してみました。手順は、以下です。

1.コマンドプロンプトを開く。

2.「adb shell」を実行し、adbのシェルを使用する。

3.setprop persist.sys.locale ja; stop; sleep 5 ; start

 

f:id:gaggit:20160918143756p:plain

3.で日本語(ja)に設定後、5秒後にエミュレータが再起動し、日本語に変わります。

f:id:gaggit:20160918143728p:plain

参照サイト:

Localizing with Resources | Android Developers

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();

 実行すると、アカウント選択画面が表示され、アカウントをクリック後、以下の画面が表示されます。

f:id:gaggit:20160916232430p:plain

「ALLOW」をクリックすると、「SignedIn」と表示されました。

f:id:gaggit:20160916232532p:plain

SignIn認証はクリアしたのですが、FusionTablesの認証は、まだです。道のりはもう少しといったところでしょうか。

 

参照サイト

google-services/IdTokenActivity.java at master · googlesamples/google-services · GitHub

New Google sign in Android - Stack Overflow

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」ボタンをクリックします。

f:id:gaggit:20160818190824p:plain

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"

 

以上です。