- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 Java 应用程序需要让用户授权我的应用程序访问 Google 服务。我有以下代码来显示和获得我需要的授权:
GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(httpTransport, JsonFactory, clientSecrets, scopes).build();
Credential cred = null;
try
{
LocalServerReceiver localSrv = new LocalServerReceiver();
AuthorizationCodeInstalledApp app = new AuthorizationCodeInstalledApp(flow, localSrv);
cred = app.authorize(userName);
}
catch(Exception ex)
{
ex.printStackTrace();
}
refreshToken = cred.getRefreshToken();
如果用户点击“授权”或“取消”按钮,一切正常。但是,如果他们关闭浏览器窗口,整个应用程序就会卡住。有没有办法处理这种情况以防止卡住或引入超时?
最佳答案
我们还将 Google 云端硬盘集成到我们的应用程序中,这是我的一个顾虑。发生的情况是,如果您调用 authorize()
方法,调用的任何线程都将阻塞。您会注意到,虽然授权窗口打开,但应用程序也没有响应。
我希望有一种方法可以检测用户是否关闭了授权窗口,但似乎这只会导致 LocalServerReceiver
无休止地等待永远不会到达的 token 。
此时您最好的选择是异步调用authorize()
,然后等待响应。
编辑:我看了一下 LocalServerReceiver
源代码,因为我们希望接收器重定向到不同的 URL 而不是显示纯文本。它实现了 VerificationCodeReceiver
接口(interface),该接口(interface)具有阻塞式 waitForCode()
方法。似乎 AuthorizationCodeInstalledApp.authorize()
在等待时阻塞是必要的,即使您自己实现了 VerificationCodeReceiver
。
关于oauth-2.0 - Googles AuthorizationCodeInstalledApp.authorize() 方法在取消身份验证时卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23857976/
我正在尝试运行来自 Google Quickstart for Java 的示例代码在 Android 模拟器上,但代码落在这一行 return new AuthorizationCodeInstal
我有一个 Java 应用程序需要让用户授权我的应用程序访问 Google 服务。我有以下代码来显示和获得我需要的授权: GoogleAuthorizationCodeFlow flow = new G
我正在尝试创建一个将发送电子邮件的 java 文件。我创建了一个 Google 网络应用程序项目,对其进行了配置(希望我做得正确),然后按照 Java Quickstart guide 进行操作. 虽
我对 API 文档和我的用例以及如何处理我的 Web 应用程序的授权 token 感到困惑。我有一个网络服务,用户登录到我的应用程序(不是 Google 应用程序),我需要他们提供我的服务(带有 Sp
我是一名优秀的程序员,十分优秀!