2016-08-15 6 views
4

Google 드라이브 REST v3 android API에 문제가 있습니다. OAuth 토큰이 BAD_AUTHENTICATION 결과를 얻습니다. 다음은 내가 사용하고있는 연결 코드입니다. 또한 OAuth 동의 화면이 표시되지 않으며 잠시 후 BAD_AUTHENTICATION 결과가 표시됩니다. 새로 고침 토큰을 서버 등에 수동으로 전달해야합니까? 이 thread에서 기반Android 드라이브 API OAuth BAD_AUTHENTICATION

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 계정 모두에 연결되어 어쩌면 때문에 오류가 발생하고있어 : 여기

// 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(); 

는 결과 코드입니다 각기 다른 암호를 가지고 있습니다. 인증 서버는 현재이 점을 잘 처리하지 못합니다. 이 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

관련 문제