2016-08-15 11 views
4

GoogleドライブREST v3アンドロイドAPIに問題があります。 OAuthトークンはBAD_AUTHENTICATION結果を取得しています。ここに私が使用している接続コードがあります。また、OAuth同意画面が表示されず、短期間でBAD_AUTHENTICATIONの結果が表示されることにも注意してください。リフレッシュトークンをサーバなどに手動で渡す必要がありますか?AndroidドライブAPI OAuth BAD_AUTHENTICATION

// Gather credentials 
credential = GoogleAccountCredential.usingOAuth2(getApplicationContext(), Arrays.asList(SCOPES)).setBackOff(new ExponentialBackOff()); 
SharedPreferences settings = getSharedPreferences("Roblu", Context.MODE_PRIVATE); 
String accountName = settings.getString("accountName", ""); 
credential.setSelectedAccountName(accountName); 

// Start Google services 
HttpTransport transport = AndroidHttp.newCompatibleTransport(); 
JsonFactory jsonFactory = JacksonFactory.getDefaultInstance(); 
service = new com.google.api.services.drive.Drive.Builder(transport, jsonFactory, credential).setApplicationName("Roblu").build(); 

ここで結果コードです:このthreadから基づい

08-15 14:11:27.621 4929-15182/? E/Auth: [GoogleAccountDataServiceImpl] getToken() -> BAD_AUTHENTICATION. Account: <ELLIDED:-238957088>, App: com.google.android.gms, Service: oauth2:https://www.googleapis.com/auth/games 
            dkq: Long live credential not available. 
             at dkr.a(:com.google.android.gms:3101) 
             at dje.a(:com.google.android.gms:397) 
             at djd.a(:com.google.android.gms:31369) 
             at djd.a(:com.google.android.gms:313) 
             at elb.a(:com.google.android.gms:1201) 
             at ela.a(:com.google.android.gms:530) 
             at ela.a(:com.google.android.gms:196) 
             at dfw.a(:com.google.android.gms:320) 
             at dfw.a(:com.google.android.gms:210) 
             at dgf.a(:com.google.android.gms:1498) 
             at dge.a(:com.google.android.gms:909) 
             at dge.e(:com.google.android.gms:523) 
             at dgd.a(:com.google.android.gms:37) 
             at dhm.getAuthToken(:com.google.android.gms:178) 
             at android.accounts.AbstractAccountAuthenticator$Transport.getAuthToken(AbstractAccountAuthenticator.java:214) 
             at android.accounts.IAccountAuthenticator$Stub.onTransact(IAccountAuthenticator.java:113) 
             at android.os.Binder.execTransact(Binder.java:453) 

答えて

2

は、ユーザーのアカウントがホストされているアカウントとGoogleアカウントの両方に接続されているので、多分エラーを取得し、おそらくそれですそれぞれに異なるパスワードを持っています。現在、認証サーバーはこれをうまく処理していません。このConnecting to Google Drive with Google APIs Client Library for Javaチュートリアルに従ってください。

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    ... 
    // Google Accounts using OAuth2 
    m_credential = GoogleAccountCredential.usingOAuth2(this, Collections.singleton(DriveScopes.DRIVE)); 

    m_client = new com.google.api.services.drive.Drive.Builder(
      m_transport, m_jsonFactory, m_credential).setApplicationName("AppName/1.0") 
      .build(); 
    ... 
} 

また、これらの関連問題に確認することができます。

・ホープ、このことができます!

+0

ありがとうございました!これは大きな助けになります。 Googleで他のものを見つけることができませんでした... – wdavies973

+0

あなたの修正は実際には機能しませんでしたが、私はまだ答えをアップアップしましたが、私のスタックアカウントは十分ではないので、まだ公開されません。 – wdavies973

関連する問題