首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >谷歌AuthorizationCodeInstalledApp.authorize()方法冻结取消的auth

谷歌AuthorizationCodeInstalledApp.authorize()方法冻结取消的auth
EN

Stack Overflow用户
提问于 2014-05-25 17:20:59
回答 1查看 3K关注 0票数 3

我有一个Java应用程序,需要让用户授权我的应用程序访问Google服务。我有以下代码来显示和获得我需要的授权:

代码语言:javascript
运行
复制
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();

如果用户单击“授权”或“取消”按钮,一切都很好。但是,如果它们关闭浏览器窗口,则整个应用程序将冻结。是否有办法处理这种情况,以防止冻结或引入超时?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-20 08:12:00

我们也正在将Google集成到我们的应用程序中,这是我关心的问题。如果调用authorize()方法,那么无论调用的线程是什么,都会阻塞。您会注意到,当授权窗口打开时,应用程序也没有响应。

我希望有一种方法来检测用户是否关闭了授权窗口,但这似乎只会导致LocalServerReceiver无休止地等待一个永远不会到达的令牌。

在这一点上,最好的选择是调用并等待响应。

编辑:我浏览了一下LocalServerReceiver源代码,因为我们希望接收者重定向到不同的URL,而不是显示纯文本。它实现了VerificationCodeReceiver接口,它有一个阻塞的waitForCode()方法。AuthorizationCodeInstalledApp.authorize()似乎有必要在等待时阻塞,即使您自己实现了VerificationCodeReceiver

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23857976

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档