我使用谷歌登錄通過客戶經理在我的Android應用程序。我可以得到accesstoken,我發送到服務器和服務器可以創建/登錄新用戶。 Accesstoken只有3600秒有效。問題是服務器在此時間過期後無法更新用戶的信息。 Web應用程序需要定期檢查用戶的信息。accountmanager刷新令牌(離線訪問)
如何從android帳戶管理器獲取身份驗證令牌和刷新令牌,以便服務器可以使用刷新令牌定期更新數據?我不想通過android應用程序中的webview使用登錄。
感謝
我使用谷歌登錄通過客戶經理在我的Android應用程序。我可以得到accesstoken,我發送到服務器和服務器可以創建/登錄新用戶。 Accesstoken只有3600秒有效。問題是服務器在此時間過期後無法更新用戶的信息。 Web應用程序需要定期檢查用戶的信息。accountmanager刷新令牌(離線訪問)
如何從android帳戶管理器獲取身份驗證令牌和刷新令牌,以便服務器可以使用刷新令牌定期更新數據?我不想通過android應用程序中的webview使用登錄。
感謝
這是現在可以:https://developers.google.com/+/mobile/android/sign-in#server-side_access_for_your_app
您要求的一次性授權碼,將它發送到您的服務器和服務器交換它的訪問令牌和刷新令牌。
目前你不能,我敢肯定不是你希望的答案,我們對此深感抱歉!如果您有網絡登錄,則可以使用混合流在服務器上獲取刷新令牌(請參閱https://developers.google.com/+/web/signin/server-side-flow),但無法將代碼作爲Android或iOS流的一部分進行檢索。
如果這是你需要的東西,你可以在這裏提交一個功能請求:https://code.google.com/p/google-plus-platform/issues - 我們正在積極尋找明星的數量來衡量對各種功能的需求。
我剛聽說 – 2013-05-14 17:44:42
通過客戶經理谷歌授權的過程:
電子郵件ID可以從
AccountManager accountManager = AccountManager.get(getApplicationContext());
Account[] accounts = accountManager.getAccountsByType("com.google");
String emailID = accounts[0].name; // you can retrieve using google account chooser way also
這兩根線應在單獨的令牌運行(不是UI線程)來獲得。
String scope = "oauth2:https://www.googleapis.com/auth/userinfo.profile https://gdata.youtube.com";
String accessToken = GoogleAuthUtil.getToken(mContext, emailID, scope);
保存accessToken並用於您的api訪問。
經過一小時(即3600秒)後,我們需要刷新訪問令牌。但現在谷歌在一小時後不支持訪問。我們必須重新啓動應用程序並使用以下行來獲取訪問令牌。
String scope = "oauth2:https://www.googleapis.com/auth/userinfo.profile https://gdata.youtube.com";
String accessToken = GoogleAuthUtil.getToken(mContext, emailID, scope);
這個後臺線程會一直在後臺運行,同時循環
無論如何,您不應該在Android上的後臺線程上使用Thread.sleep()。線程是一個昂貴的資源。 在由AlarmManager觸發的處理程序或後臺服務上安排您的代碼。 – Renascienza 2014-12-13 15:39:48
嗨ADE,我按照說明進行操作,但我不知道在哪裏可以找到「一次性授權碼「我必須發送到我的服務器才能獲取刷新令牌。你可以幫我嗎? – Meroelyth 2014-10-21 10:06:10