GoogleAuthUtil.getToken()でGoogleAuthException: Unknown が発生する問題を解決できた
この前、GoogleAuthUtil.getToken()でドはまりしたって記事を書いた。
GoogleAuthUtil.getToken()でGoogleAuthException: Unknown でドはまり中 - 今日の役に立たない一言 − Today’s Trifle! −
private static final String scope = "oauth2:" + Scopes.PLUS_LOGIN + " " + YouTubeScopes.YOUTUBE; private void auth() { AsyncTask<Void, Void, Boolean> task = new AsyncTask<Void, Void, Boolean>() { @Override protected Boolean doInBackground(Void... params) { try { authToken = GoogleAuthUtil.getToken(MainActivity.this, accountName, scope); } catch (UserRecoverableAuthException e) { startActivityForResult(e.getIntent(), REQUEST_AUTHORIZATION); e.printStackTrace(); return false; } catch (IOException e) { e.printStackTrace(); } catch (GoogleAuthException e) { e.printStackTrace(); } return true; } }; task.execute(new Void[0]); }
以下の例外が発生してた件。
10-20 00:24:15.648: W/System.err(6452): com.google.android.gms.auth.GoogleAuthException: Unknown 10-20 00:24:15.648: W/System.err(6452): at com.google.android.gms.auth.GoogleAuthUtil.getToken(Unknown Source) 10-20 00:24:15.648: W/System.err(6452): at com.google.android.gms.auth.GoogleAuthUtil.getToken(Unknown Source)
しばらく放置してて、ひさしぶりにコードを眺めてみたら、まずいところを発見。
あっさり解決した。
GoogleAccountCredential を取得するコードに間違いがあった。
credential = GoogleAccountCredential.usingAudience(this, scope);
これを以下のように修正したらあっさり動作した。
credential = GoogleAccountCredential.usingOAuth2(this, scopes);
動かなくて試行錯誤しているうちに、Audienceを使う方法も試したんだけど、やっぱりうまくいかなくて、あとでOAuth2に戻した時に、ここだけ戻し忘れてたらしい。
やはりしょーもないミスであった。。。
(´・ω・`)