1

SharedPreferencesに保存されたトークンから認証情報を取得する関数を実装しました。

mCredential = new GoogleCredential.Builder()
                   .setClientSecrets(CLIENT_ID, CLIENT_SECRET)
                   .setJsonFactory(mJsonFactory)
                   .setTransport(mHttpTransport).build();

mCredential.setRefreshToken(accessRefreshTokenSave);
mCredential.setAccessToken(accessTokenSave);

Long expires = mCredential.getExpiresInSeconds();
boolean result = mCredential.refreshToken();

トークンの有効期限が切れたとき。mCredential.refreshToken()を呼び出してトークンを更新する必要がありますが、正しいですか?

refreshToken を呼び出すと、例外が発生しました。

com.google.api.client.auth.oauth2.TokenResponseException: 400 Bad Request
{
  "error" : "invalid_grant"
}

トークンを更新するにはどうすればよいですか? Using OAuth 2.0で更新トークンに関するドキュメントを見つけました。しかし、Androidコードに実装する方法がわかりませんか? これを行うサンプルコードはありますか?

4

2 に答える 2

1

一般に (ドキュメントが見つからないため、私の経験では) 「無効な許可」は、保存されている更新トークンに問題があることを意味します。これには(私が思うに)以下が含まれます:-

  1. ユーザーがそれを取り消しました
  2. テストにより、複数の更新トークンが生成されました。現存するのはわずか25個
  3. 保存されたトークンに関連付けられたスコープが変更されました

状況を回復するには、保存されているリフレッシュ トークンを削除し、プロセスを再度開始します。ユーザー失効のシナリオ (1) を除けば、これはテスト環境の問題であり、必ずしもバグがあるとは限りません。

于 2012-09-27T05:57:01.463 に答える
0

Android の OAUTH であるhttps://developers.google.com/+/mobile/android/sign-inを見てください。何が問題なのかを確認したり、プロジェクトでサンプル コードを使用したりできます。詳細を説明するには、プロジェクト全体を投稿する (たとえば、GitHub にリンクする) か、関心のあるクラスを投稿する必要があります ;-)

于 2014-05-16T20:25:32.060 に答える