我正在开发一个应用程序来向某些帐户添加任务使用“Google Tasks API”for java使用Oauth 2.0。
问题是每次我想在帐户上添加任务我必须使用身份验证页面并使用帐户和密码进行授权,然后等待回调添加任务,这是不切实际的
我想知道是否有另一种方法来授权java应用程序而不执行它并避免回调函数:
可以通过发送电子邮件等方式向Gmail帐户所有者发送链接。
所以我想做的就是:
thx
答案 0 :(得分:3)
典型的OAuth 2.0流程如下:
访问令牌可用于对用户数据进行经过身份验证的请求,但会在一段时间后过期。刷新令牌永不过期(除非用户在其帐户设置中撤消了应用程序的权限),并且可用于获取新的请求令牌。
您可以在OAuth2.0 Playground。
中查看整个流程如果您正确地遵循流程并保存两个令牌(在数据库或文件中,具体取决于平台),那么用户必须只能看到该屏幕一次。
现在最好的部分: Google API Java客户端库应该为您解决所有问题。要使用的确切类会根据您使用的库的版本而更改,但您应该设置在创建服务对象时保留标记的位置。例如,使用日历API:
// For this example we're saving the credentials in a file on the system,
// rather than a database.
FileCredentialStore credentialStore = new FileCredentialStore(
new File(System.getProperty("user.home"), ".credentials/calendar.json"), JSON_FACTORY);
// set up authorization code flow
GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(
HTTP_TRANSPORT, JSON_FACTORY, clientSecrets, Collections.singleton(CalendarScopes.CALENDAR))
.setCredentialStore(credentialStore) // This will store the tokens for you
.build();
您可以在calendar-cmdline-sample here中查看。有plenty of other samples too,可以在App Engine或Android上查看授权流程。