使用Google API Java客户端库刷新令牌
问题描述:
我正在使用Google API Java客户端http://code.google.com/p/google-api-java-client/,并且能够成功获取Android的访问令牌。使用Google API Java客户端库刷新令牌
// Google Accounts
credential = GoogleAccountCredential.usingOAuth2(this, CalendarScopes.CALENDAR);
SharedPreferences settings = getPreferences(Context.MODE_PRIVATE);
credential.setSelectedAccountName(settings.getString(PREF_ACCOUNT_NAME, null));
因为我希望我的web服务器进行离线API调用,我需要一个刷新令牌。我一直在广泛搜索,还没有想出如何去做。
理想情况下,我倾向于通过WebView使用Google API Java客户端来获取刷新令牌(无需输入用户名或密码)。
任何帮助,将不胜感激!
答
你需要的时候你开始授权流程设置如下:
- 审批提示=力
- 访问类型=假
有了这些PARAMS设置,谷歌将返回刷新令牌和图书馆将处理刷新。这适用于我:
new GoogleAuthorizationCodeFlow.Builder(HTTP_TRANSPORT, JSON_FACTORY, getClientCredential(),
Arrays.asList(SCOPES)).setCredentialStore(new OAuth2CredentialStore()).setAccessType("offline")
.setApprovalPrompt("force").build();
感谢您的帮助。这是否与帐户选择器一起工作(即它是否适用于GoogleAccountCredential?) – 2013-03-01 19:49:56
我想,因为GoogleAccountCredential实现了HttpRequestInitializer。但尝试它有助于找出;) – koma 2013-03-02 00:16:29
我不知道如何将此与GoogleAccountCredential,任何提示进行整合? :( – Goddchen 2013-03-05 09:21:01