6

私は自分のAndroidアプリでアカウントマネージャーを介してグーグルログインを使用しています。サーバーに送信するアクセストークンを取得でき、サーバーは新しいユーザーを作成/ログインできます。Accesstokenは3600秒のみ有効です。問題は、この時間が経過するとサーバーがユーザーの情報を更新できないことです。Webアプリでは、ユーザーの情報を定期的に確認する必要があります。

サーバーが更新トークンを使用してデータを定期的に更新できるように、Androidアカウントマネージャーから認証トークンと更新トークンを取得するにはどうすればよいですか?Androidアプリでwebviewからログインしたくない。

ありがとう

4

3 に答える 3

5

これが可能になりました:https ://developers.google.com/+/mobile/android/sign-in#server-side_access_for_your_app

ワンタイム認証コードをリクエストしてサーバーに送信すると、サーバーはそれをアクセストークンと更新トークンと交換します。

于 2013-05-16T05:15:25.623 に答える
3

現在、あなたはできません、それはあなたが望んでいる答えではないと私は確信しています、それについて申し訳ありません!Webサインインがある場合は、ハイブリッドフローを使用して、サーバーで更新トークンを取得することもできます(https://developers.google.com/+/web/signin/server-side-flowを参照)。 AndroidまたはiOSフローの一部としてコードを取得する方法はありません。

これがユースケースに必要なものである場合は、ここで機能リクエストを提出できますか:https ://code.google.com/p/google-plus-platform/issues-私たちは積極的に星の数を調べていますその上で、さまざまな機能の需要を測定します。

于 2013-03-28T13:39:57.137 に答える
0

アカウントマネージャーによるGoogle認証プロセス:

メール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アクセスに使用します。

1時間(つまり3600秒)後、アクセストークンを更新する必要があります。しかし現在、グーグルは1時間後のアクセスをサポートしていません。アプリケーションを再起動し、次の行を使用してアクセストークンを取得する必要があります。

String scope = "oauth2:https://www.googleapis.com/auth/userinfo.profile https://gdata.youtube.com";
String accessToken = GoogleAuthUtil.getToken(mContext, emailID, scope);

このバックグラウンドスレッドは、whileループで常にバックグラウンドで実行されます

于 2014-10-10T06:00:04.763 に答える