我正在使用Google表格API将Google文档中的Google电子表格连接到我的Android应用程序。
我想将单个公共电子表格连接为我的应用的数据库。我想知道如何在没有OAuth的情况下做到这一点。我只想让拥有该应用程序的人能够访问/读取数据库。
我想知道该怎么做?
我已按照Google Spreadsheet API页面上的说明进行操作。
此外,以下网址如何帮助我访问我的公开Google电子表格? 以下网址(取自google sheet api页面)
https://spreadsheets.google.com/feeds/worksheets/key/private/full
我的公开Google电子表格:here
答案 0 :(得分:2)
可以使用手机用户的Google帐户,而无需生成任何OAuth令牌或凭据,这些令牌或凭据可能会穿过阻止访问电子表格的任何授权障碍:
首先,设置登录客户端:
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestScopes(new Scope("https://www.googleapis.com/auth/spreadsheets"))
.requestEmail()
.build();
googleSignInClient = GoogleSignIn.getClient(this, gso);
如果用户尚未登录,则提示用户登录(在他们已经登录时提示登录将导致取消的错误):
if (GoogleSignIn.getLastSignedInAccount(this) == null) {
startActivityForResult(googleSignInClient.getSignInIntent(), RC_SIGN_IN);
} else {
// use the already signed in account
Account account = GoogleSignIn.getLastSignedInAccount(this).getAccount();
}
如果系统提示用户登录,则该活动完成后:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == RC_SIGN_IN) {
try {
Account account = GoogleSignIn.getSignedInAccountFromIntent(data).getResult(ApiException.class).getAccount();
} catch (ApiException e) {
Log.w("MyActivity", "signInResult: failed code=" + e.getStatusCode() + ", reason: " + GoogleSignInStatusCodes.getStatusCodeString(e.getStatusCode()), e);
}
}
}
然后使用没有任何特殊OAuth令牌的用户帐户来使用表格API:
GoogleAccountCredential credential = GoogleAccountCredential.usingOAuth2(context, Collections.singleton("https://www.googleapis.com/auth/spreadsheets"));
credential.setSelectedAccount(account);
Sheets sheetsService = new Sheets.Builder(AndroidHttp.newCompatibleTransport(), JacksonFactory.getDefaultInstance(), credential).build();
Spreadsheet response = null;
try {
response = sheetsService.spreadsheets().get("insert spreadsheet ID here").setRanges(Arrays.asList("'sheet name here'!A2:G30"))
.setFields("sheets.data.rowData.values.effectiveValue").execute();
} catch (UserRecoverableAuthIOException ex) {
context.startActivity(ex.getIntent());
} catch (IOException e) {
Log.e(CLASS_NAME, "failure to get spreadsheet: " + e.getMessage(), e);
}
此处是使用用户的OAuth而不是生成任何令牌访问Google表格的完整项目:https://github.com/stephenkittelson/interviewsetter
答案 1 :(得分:1)
使用Google SpreadSheet Library for Android by Prasanta轻松访问表格数据。您可以在blog上找到支持的功能列表。
或强>
访问将数据表格化为JSON并在您的应用中解析它。
使用以下网址访问JSON:https://spreadsheets.google.com/tq?key=< your-sheets-key>
例如:https://spreadsheets.google.com/tq?key=1tJ64Y8hje0ui4ap9U33h3KWwpxT_-JuVMSZzxD2Er8k