我使用Gmail API for Java与用户的Gmail框进行互动(阅读电子邮件,文件夹等) 这就是我授权的方式(主要是代码来自快速入门)
static GMailAuthorizationProvider getGmailProvider(String userMail) throws IOException {
return new GMailAuthorizationProvider(userMail);
}
private GMailAuthorizationProvider(String userId) throws IOException {
gmailService = getGmailService(userId);
try {
gmailService.users().getProfile(userId).execute();
}
catch (IOException e) {
DATA_STORE_FACTORY.getDataStore("StoredCredential").delete(userId);
throw new IOException(e);
}
}
private Gmail getGmailService(String id) throws IOException {
return new Gmail.Builder(HTTP_TRANSPORT, JSON_FACTORY, getAuthorizedCredential(id))
.setApplicationName(APP_NAME)
.build();
}
private Credential getAuthorizedCredential(String id) throws IOException {
InputStream in = GMailAuthorizationProvider.class.getResourceAsStream("client_secret.json");
GoogleClientSecrets clientSecrets = GoogleClientSecrets.load(JSON_FACTORY, new InputStreamReader(in));
GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(
HTTP_TRANSPORT, JSON_FACTORY, clientSecrets, SCOPES)
.setDataStoreFactory(DATA_STORE_FACTORY)
.setAccessType("offline")
.build();
return new AuthorizationCodeInstalledApp(flow, new LocalServerReceiver()).authorize(id);
}
此处出现问题...当我输入空字符串时,流程为:
gmailService.users().getProfile(userId).execute();
或者,如果我删除此行,则在尝试加载用户的邮件文件夹时仍会出现404错误。
但是如果用户输入类似
的内容username@gmail.com
然后使用此ID创建新帐户,即可。 API传递,我获得所有邮件文件夹。
那么如何处理用户输入的空字符串(这意味着在我的应用程序中创建新帐户)?我希望能够通过已经创建的帐户ID传递API,或者在Web视图中选择。
提前致谢。