크롬 확장프로그램에서 구글 드라이브 연동 예제
Google Drive API key 생성 과정
API 기능을 활용하려면 아래와 4개를 생성해야 한다.
1. p12key 파일
2. Client ID
3. Email address
4. Pulic key fingerprints
로그인 후 https://console.developers.google.com/project 로 접속한 후
만들어진 프로젝트설정에서 Drive API ON 하고 Credentials(인증)설정에서 Client ID를 생성한다.
API Project 를 클릭한 뒤 사용자 인증정보를 들어가면 Client ID 등의 정보가 나옴.
링크는 카메라를 찍어서 구글드라이브에 저장해주는 예제입니다.
saveFileToDrive() 부분이 파일 저장하는 부분이며,
제가 알기로는 startcameraintent로부터 카메라를 찍어서 저장한 파일을
saveFileToDrive()에서 읽어와서 file = service.files~~~~ 부분에서 업로드 시키는 것입니다.
답변 :
구글 드라이브 API를 기존에 써본적은 없었는데 질문내용에 흥미가 생겨 developer 싸이트 예제를 그대로 따라해본 뒤에 text 파일만 올리는걸로 바꿔봤습니다. 테스트 결과 잘되네요. 외장메모리에 andlog.txt 파일을 올리는 예제입니다. public class MainActivity extends Activity { static final int REQUEST_ACCOUNT_PICKER = 1; static final int REQUEST_AUTHORIZATION = 2; private static Uri fileUri; private static Drive service; private GoogleAccountCredential credential; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); credential = GoogleAccountCredential.usingOAuth2(this, DriveScopes.DRIVE); startActivityForResult(credential.newChooseAccountIntent(), REQUEST_ACCOUNT_PICKER); } @Override protected void onActivityResult(final int requestCode, final int resultCode, final Intent data) { switch (requestCode) { case REQUEST_ACCOUNT_PICKER: if (resultCode == RESULT_OK && data != null && data.getExtras() != null) { String accountName = data .getStringExtra(AccountManager.KEY_ACCOUNT_NAME); if (accountName != null) { credential.setSelectedAccountName(accountName); service = getDriveService(credential); setFileUri(); } } break; case REQUEST_AUTHORIZATION: if (resultCode == Activity.RESULT_OK) { saveFileToDrive(); } else { startActivityForResult(credential.newChooseAccountIntent(), REQUEST_ACCOUNT_PICKER); } break; } } private void setFileUri() { String mediaStorageDir = Environment.getExternalStorageDirectory().getPath(); fileUri = Uri.fromFile(new java.io.File(mediaStorageDir + java.io.File.separator + "andlog.txt")); saveFileToDrive(); } private void saveFileToDrive() { Thread t = new Thread(new Runnable() { @Override public void run() { try { // File's binary content java.io.File fileContent = new java.io.File(fileUri .getPath()); FileContent mediaContent = new FileContent("text/plain", fileContent); // File's metadata. File body = new File(); body.setTitle(fileContent.getName()); body.setMimeType("text/plain"); File file = service.files().insert(body, mediaContent) .execute(); if (file != null) { showToast("text file uploaded: " + file.getTitle()); } } catch (UserRecoverableAuthIOException e) { startActivityForResult(e.getIntent(), REQUEST_AUTHORIZATION); } catch (IOException e) { e.printStackTrace(); } } }); t.start(); } private Drive getDriveService(GoogleAccountCredential credential) { return new Drive.Builder(AndroidHttp.newCompatibleTransport(), new GsonFactory(), credential).build(); } public void showToast(final String toast) { runOnUiThread(new Runnable() { @Override public void run() { Toast.makeText(getApplicationContext(), toast, Toast.LENGTH_SHORT).show(); } }); } } |
https://drive.google.com/folderview?id=xxxxxx&usp=sharing
https://drive.google.com/drive/folders/xxxxxxx
https://googledrive.com/host/xxxxx/index.html