gaggitのブログ

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

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