Google 드라이브를 Android 애플리케이션에 통합하기 위해 오랫동안 노력했습니다. 그러나 그것은 나쁜 의미에서 Google이 언제나 놀랐던 함정입니다. 모든 것은 Google의 지침 (first, first)에 의존한다는 사실로 시작되었습니다. OAuth 2.0을 작성하여 애플리케이션, 애플리케이션 등록, 가져온 라이브러리에 대한 핵심을 생성 한 모든 조건을 충족 시켰습니다. 일반적으로 요청한 모든 사항과 100 번 재확인 한 모든 사항을 수행했습니다. 하지만 예상대로 작동하지 않습니다. 첫 번째 경우가 모두 예가되고 "403 Forbidden Access Not Configured"이 표시됩니다. 두 번째는 구현할 수 없습니다. Google에서 비밀 키를 발급하지 않았기 때문입니다. 일주일 내내이 문제에 대한 대안적인 해결책을 찾고있었습니다. 많은 정보와 노력, 많은 시간을 보냈지 만 그 결과는 0입니다. 희미한 희망은 ArtOfWarfare이라는 일반적인 질문을 통해 나타났습니다. 그러나 그가 제안한 코드와 그가 일하는 것으로 나는 잘 작동하지 않습니다. 애플리케이션에서 계정을 사용하도록 허용하고,이어서 'Google과의 통신 오류'로 인해 연결이 실패한 경우 반복 시도로 동일한 결과가 발생합니다. 결과적으로 드라이브와 통신하려고 "자신의"코드를 그렸습니다. 내가 여기서 쓰고 있기 때문에 작동하지 않는다. 아래에 표시된 코드는 "400 잘못된 요청 잘못된 업로드 요청", "을 반환합니다. 승인을 통해이 문제를 해결하는 방법에 대한 아이디어가 있습니까? 아니면 로그인에 성공하는 다른 방법이 있습니까? 저는 기쁜 건설적인 대화를 나눌 것입니다.Android 드라이브 Api가 400 개의 잘못된 요청을 받음
package com.example.hiv;
import java.io.IOException;
import android.accounts.AccountManager;
import android.accounts.AccountManagerCallback;
import android.accounts.AccountManagerFuture;
import android.accounts.OperationCanceledException;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import com.google.api.client.extensions.android.http.AndroidHttp;
import com.google.api.client.googleapis.auth.oauth2.GoogleCredential;
import com.google.api.client.googleapis.extensions.android.gms.auth.UserRecoverableAuthIOException;
import com.google.api.client.googleapis.services.GoogleKeyInitializer;
import com.google.api.client.http.FileContent;
import com.google.api.client.http.HttpTransport;
import com.google.api.client.json.JsonFactory;
import com.google.api.client.json.gson.GsonFactory;
import com.google.api.services.drive.Drive;
public class ActivityStart extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout_activity_start);
String AUTH_TOKEN_TYPE = "oauth2:https://www.googleapis.com/auth/drive";
AccountManager accountManager = AccountManager.get(this);
accountManager.invalidateAuthToken(accountManager.getAccounts()[0].type, null);
accountManager.getAuthToken(accountManager.getAccountsByType("com.google")[0], AUTH_TOKEN_TYPE, null, this,
new AccountManagerCallback<Bundle>() {
public void run(final AccountManagerFuture<Bundle> future) {
try {
String authToken = future.getResult().getString(
AccountManager.KEY_AUTHTOKEN);
final HttpTransport transport = AndroidHttp.newCompatibleTransport();
final JsonFactory jsonFactory = new GsonFactory();
GoogleCredential credential = new GoogleCredential();
credential.setAccessToken(authToken);
final Drive drive = new Drive.Builder(transport, jsonFactory, credential)
.setApplicationName("HIV")
.setGoogleClientRequestInitializer(new GoogleKeyInitializer("*****yDaPx1EtTHpMMMULzYlxjc3xdwsf******"))
.build();
Thread t = new Thread(new Runnable() {
@Override
public void run() {
try {
final com.google.api.services.drive.model.File body = new com.google.api.services.drive.model.File();
body.setTitle("My Test File");
body.setDescription("A Test File");
body.setMimeType("text/plain");
java.io.File fileContent = new java.io.File("data/data/com.example.hiv/document.txt");
FileContent mediaContent = new FileContent("text/plain", fileContent);
com.google.api.services.drive.model.File file = drive.files().insert(body, mediaContent).execute();
} catch (UserRecoverableAuthIOException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
});
t.start();
} catch (OperationCanceledException exception) {
// TODO
} catch (Exception exception) {
Log.d(this.getClass().getName(), exception.getMessage());
}
}
}, null);
}
}
해결 :.. 내가 크기가 0 KB입니다 파일을 보내려고 –
를 다음에 응답하거나 가까운하십시오 이 질문. 감사합니다 :) –