我正在開發一個應用程序,該應用程序使用OAuth2和谷歌客戶端庫訪問Google API(以Calendar API開始)(位於Appengine和GWT上) BTW)。如何獲得離線令牌和刷新令牌並自動刷新對Google 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)我看不到如何設置自動刷新功能。 這些頁面描述的方法:
,但我看不到的地方添加刷新監聽器。有在GoogleAuthorizationCodeFlow.Builder
類中沒有這樣的方法,不同的是Credential.Builder
類
編輯 調試代碼更後,當憑證回來(在onSuccess()
法)似乎有RefreshListener
組已經.....所以也許這是他們的默認情況,我唯一的問題是我沒有得到refresh_token
,儘管要求。
也許還需要查看Google API控制檯中的設置嗎?
感謝您的評論,我會檢查這些行。目前,我做了一個明確的令牌撤銷,然後再次請求它,我總是通過顯式接受屏幕爲用戶 - 但仍然沒有得到一個refresh_token。 –
vlatko,我正在做你說的所有事情*除了*迅速的力量,這似乎已經修復它!所以,你的回答非常感謝!這是一個錯誤,還是(太廣泛的)文檔中的明顯遺漏? –