2016-10-13 7 views
0

Google 드라이브 Android API (GDAA)를 사용하고있어 사용자가 파일 (Google 문서, 스프레드 시트, 이미지, 비디오, 오디오 등)을 드라이브에서 제거하고 앱 서버로 보냅니다.사용자가 Google 드라이브에서 파일을 가져 와서 Android 앱을 통해 내 서버로 전송 (업로드)

나는 GDAA 사용에 관한 웹 및 공식 Google 문서에 대한 몇 가지 자습서를 따라 왔습니다.

은 나뿐만 아니라 다음과 같은 대답을 시도 : Fetching contents of Google Drive file through FileId

하지만이 역시 작동하지 않습니다. result.getStatus().isSuccess()은 항상 false입니다. 이유를 모르겠습니다.

다음은 내 open() 기능입니다 :

private void open() { 
    DriveFile driveFile = mFileId.asDriveFile(); 
    driveFile.open(mGoogleApiClient, DriveFile.MODE_READ_ONLY, null) 
      .setResultCallback(driveContentsCallback); 
    mFileId = null; 
} 

그리고 그 다음은 내가 result.getStatus().isSuccess()false로 얻을 콜백입니다 :

/** 
* This is Result result handler of Drive contents. 
*/ 
final ResultCallback<DriveApi.DriveContentsResult> driveContentsCallback = 
     new ResultCallback<DriveApi.DriveContentsResult>() { 
      @Override 
      public void onResult(DriveApi.DriveContentsResult result) { 

       if (!result.getStatus().isSuccess()) { 
        return; 
       } 

       // Read from the input stream an print to LOGCAT 
       DriveContents driveContents = result.getDriveContents(); 
       BufferedReader reader = new BufferedReader(new InputStreamReader(driveContents.getInputStream())); 
       StringBuilder builder = new StringBuilder(); 
       String line; 
       try { 
        while ((line = reader.readLine()) != null) { 
         builder.append(line); 
        } 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 
       String contentsAsString = builder.toString(); 
       Log.i("ContentAsString", contentsAsString); 

       // Close file contents 
       driveContents.discard(mGoogleApiClient); 
      } 
     }; 

지금은이 코드에 의존하고 들어. Google 스프레드 시트 및 문서 도구를 열 수 있었지만 이미지 및 동영상뿐만 아니라 이미지 및 동영상을 내 앱 서버에 업로드해야합니다 (파일을 여는 것은 필요하지 않습니다). 내가 이것을 달성 할 수있는 방법이 있습니까?

SAF (Storage Access Framework)에 대해 읽었으며 Kitkat 이후 Google 드라이브 파일에 액세스 할 수 있지만 내 앱은 JellyBean 이상에서 실행되는 기기를 지원하므로 GGDA와 함께 가고 있습니다.

아직 REST API를 확인하지 않았습니다. 나는 이것이 올바른 방법으로하고 있는지 또는 내가 원하는 것을 성취 할 수있는 완전히 다른 방법인지 이해하고 싶다. 이것이 올바른 방법이라면 무엇이 잘못 될까요?

도움이 될 것입니다.

답변

0

다음과 같은 해결 방법을 시도 할 수 있습니다 :

  • 하는 것이 있는지 확인하십시오 당신 올바른 SHA1와 generate the correct configuration.
  • 앱 폴더의 이 올바른지 확인하십시오.
  • Credentials page으로 이동하여 올바른 프로젝트를 선택하십시오. 구성 파일을 생성하는 데 사용한 것과 동일해야합니다.
  • Credentials section에서 OAuth 2.0 클라이언트 ID 유형이 Android가 아닌 웹 애플리케이션이어야합니다.
  • string.xml에있는 API key이 Google 개발자 콘솔에있는 것과 일치하는지 확인하십시오.

위 방법으로도 문제가 해결되지 않으면 Google 개발자 콘솔에서 새 프로젝트를 기반으로 새 API 키를 만들어보세요.