ボクココ

個人開発に関するテックブログ

Android の Google Plus ログインで SIGN_IN_REQUIRED で内部エラー

久々に発狂しそうなレベルで詰まった。

Google Plus ログインで以下のようなコードを書くことになる。

    @Override
    public void onConnectionFailed(ConnectionResult result) {
        Log.e(TAG, result.toString());
        if (result.hasResolution()) {
            try {
                result.startResolutionForResult(activity, REQUEST_CODE_RESOLVE_ERR);
            } catch (IntentSender.SendIntentException e) {
                googleApiClient.connect();
            }
        } 
     }

さて、hasResolution()では、ユーザがこのアプリへの情報読み取り許可をしていない場合にtrueを返す訳だが、startResolutionForResult() がどうしても呼ばれず、「内部エラーが発生しました」と出て先に進まなかった。

ログを見ると以下のようなメッセージが出た。

onnectionResult{statusCode=SIGN_IN_REQUIRED, resolution=PendingIntent{53363ccc: android.os.BinderProxy@5323fbf0}}

さらに詳細を見ると、

adb -d shell setprop log.tag.GooglePlusPlatform VERBOSE

INVALID_CLIENT_ID my_email@domain oauth2:https://www.googleapis.com/auth/plus.login

答えはここにあった。

Google API コンソールの API & Auth の Consent Screen にちゃんと値をセットしていないと上記のエラーが出る

「内部エラーが発生しました」だけじゃそんなのわかる訳ねぇ!まぁ直って良かった。