AndroidからOAuth2を使ってGoogle SpreadSheetへアクセスする方法

  • 9
    Like
  • 0
    Comment
More than 1 year has passed since last update.

SpreadSheetなどのGoogle Docsへのアクセスの情報は、新旧入り乱れてカオスになってます。
現時点では以下の流れが一番シンプルにできますた。

MainActivity.java
        //※ここにユーザーアカウント選択画面があると素敵だと思います。

        //oauth tokenの取得
        String token;
        try {
            token = GoogleAuthUtil.getToken(this, "shikajiro@gmail.com", "oauth2:https://spreadsheets.google.com/feeds");
            Log.i("TAG", token);
        } catch (UserRecoverableAuthException e) {
            //最初のアクセスの場合かならずここに来る。
            //ユーザーに承認を求める画面が表示される。
            startActivityForResult(e.getIntent(), USER_RECOVERABLE_AUTH);
            return;
        }catch (IOException | GoogleAuthException e) {
            Log.e("TAG", "", e);
            return;
        }

        //Spreadsheetへアクセスするサービス
        SpreadsheetService service = new SpreadsheetService("applicationName");
        service.setProtocolVersion(SpreadsheetService.Versions.V3);
        service.setAuthSubToken(token);//tokenを設定

        //プライベート権限のシート全てにアクセスして、とりあえずタイトル表示する。
        try {
            URL url = new URL("https://spreadsheets.google.com/feeds/spreadsheets/private/full");
            SpreadsheetFeed spreadsheetFeed = service.getFeed(url, SpreadsheetFeed.class);
            Log.i("TAG", spreadsheetFeed.getTitle().getPlainText());
            for (SpreadsheetEntry entry : spreadsheetFeed.getEntries()) {
                Log.i("TAG", entry.getTitle().getPlainText());
            }
        } catch (IOException | ServiceException e) {
            Log.e("TAG", "", e);
        }

    }

    @OnActivityResult(USER_RECOVERABLE_AUTH)
    void onResult(){
        callOauthToken();
    }

AndroidAnnotationを利用して書いています。雰囲気で読んでください。

https://console.developers.google.com/project
で以下みたいなクライアントIDも作っておく必要があるかもしれない。ないかもしれない。
Screen_Shot_2015-02-10_at_19_21_28.png