我终于想出了整个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: }
我想我可以简单地将代码合并在一起,但我很好奇我是否接近这个错误以及我是否误解了导致错误的问题。