如何跨活动传递GoogleAccountCredential?

时间:2017-04-22 04:45:38

标签: android android-intent google-sheets google-oauth

我终于想出了整个Google表格OAuth访问enchilada,但我最终得到了一个笨拙的类,它执行授权和实际数据获取/更新。所以我希望我可以将其分成两部分,并将与凭证相关的代码放入一个活动(我将通过startActivity调用),并在其他活动(通过AsyncTask)中对Google Spreadsheet进行所有实际的读/写操作。 但看起来我需要通过GoogleAccountCredential,是吗? 也就是说当我用下面的方式启动我的AsyncTask时,它似乎扼杀了缺少的凭证:

    private class MakeRequestTask extends AsyncTask<Void, Void, List<String>> {

        private com.google.api.services.sheets.v4.Sheets mService = null;

        MakeRequestTask(Context context,GoogleAccountCredential credential) {

            HttpTransport transport = AndroidHttp.newCompatibleTransport();

            JsonFactory jsonFactory = JacksonFactory.getDefaultInstance();

            mService = new com.google.api.services.sheets.v4.Sheets.Builder(
                    transport, jsonFactory, credential)
                    .setApplicationName("Google Sheets API Android Quickstart")
                    .build();

我在logcat中看到了这个:

04-21 21:27:44.505 13432-13555/com.mairyu.app.lingoflash W/System.err: com.google.api.client.googleapis.json.GoogleJsonResponseException: 403 Forbidden
04-21 21:27:44.505 13432-13555/com.mairyu.app.lingoflash W/System.err: {
04-21 21:27:44.505 13432-13555/com.mairyu.app.lingoflash W/System.err:   "code" : 403,
04-21 21:27:44.505 13432-13555/com.mairyu.app.lingoflash W/System.err:   "errors" : [ {
04-21 21:27:44.505 13432-13555/com.mairyu.app.lingoflash W/System.err:     "domain" : "global",
04-21 21:27:44.505 13432-13555/com.mairyu.app.lingoflash W/System.err:     "message" : "The request is missing a valid API key.",
04-21 21:27:44.505 13432-13555/com.mairyu.app.lingoflash W/System.err:     "reason" : "forbidden"
04-21 21:27:44.505 13432-13555/com.mairyu.app.lingoflash W/System.err:   } ],
04-21 21:27:44.505 13432-13555/com.mairyu.app.lingoflash W/System.err:   "message" : "The request is missing a valid API key.",
04-21 21:27:44.505 13432-13555/com.mairyu.app.lingoflash W/System.err:   "status" : "PERMISSION_DENIED"
04-21 21:27:44.505 13432-13555/com.mairyu.app.lingoflash W/System.err: }

我想我可以简单地将代码合并在一起,但我很好奇我是否接近这个错误以及我是否误解了导致错误的问题。

0 个答案:

没有答案