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