java – 如何获取离线令牌并刷新令牌并自动刷新对Google API的访
我正在开发一个使用OAuth2和Google客户端库(位于Appengine和GWT BTW)上访问Google API(从Calendar API开始)的应用程序.
我实现了我的OAuth2Call后退servlet,扩展了Google AbstractAppEngineAuthorizationCodeCallbackServlet. 我有工作,我可以访问,可以查看日历等,但有两个问题: 1)我没有获得刷新令牌,尽管显式请求离线访问: public static GoogleAuthorizationCodeFlow newFlow( String scope ) throws IOException { GoogleAuthorizationCodeFlow.Builder builder = new GoogleAuthorizationCodeFlow.Builder( HTTP_TRANSPORT,JSON_FACTORY,getClientSecrets(),Collections.singleton( scope ) ); builder.setCredentialStore( new AppEngineCredentialStore() ).setAccessType("offline"); return builder.build(); } 2)我看不到如何设置自动刷新功能. > Class Credential.Builder 但是我看不到添加刷新监听器的位置.与Credential.Builder类不同,GoogleAuthorizationCodeFlow.Builder类中没有这样的方法 编辑 也可能需要在Google API控制台中查看设置? 解决方法
您应该注意的一件事是:仅当用户明确地为所请求的范围给出同意时,才会返回刷新令牌(除了访问令牌).基本上,当显示批准页面.所有后续流程将只返回访问令牌.
现在,为了测试您的应用程序并确保您第一次收到刷新令牌,您可以使用approval_prompt = force参数(builder.setApprovalPrompt(“force”))来确保批准页面显示在流程中您得到用户的明确同意.解决任何问题后,确保刷新令牌存储正确,您可以删除该标志(默认为自动) 更多信息也可在offline access section的开发者指南中找到. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |