2012-11-15 2 views
3

Android 용 Google 드라이브로 작업 할 응용 프로그램을 만들고 있습니다.setJsonHttpRequestInitializer 메소드가 Drive.Builder 유형에 대해 정의되지 않았습니다. Android

인터넷에서 몇 가지 예를 검색했지만 모두 동일합니다. 다음과 같은 오류가 나타납니다.

Object Drive.Builder does not have method setJsonHttpRequestInitializer. 

Google 드라이브 API V1 및 V2를 사용하여 운이 좋음을 테스트했습니다.

어디에 문제가 있습니까?

출처 :

private Drive getDriveService(String accountName) { 

    HttpTransport ht = AndroidHttp.newCompatibleTransport();      
    JacksonFactory jf = new JacksonFactory();   
    Credential credential = new Credential(BearerToken.authorizationHeaderAccessMethod()).setAccessToken(accountName);   

     Drive.Builder b = new Drive.Builder(ht, jf, null); 
     b.setJsonHttpRequestInitializer(new JsonHttpRequestInitializer() { 

      @Override 
      public void initialize(JsonHttpRequest request) throws IOException { 
       DriveRequest driveRequest = (DriveRequest) request; 
       driveRequest.setPrettyPrint(true); 
       driveRequest.setOauthToken(accountName); 
       driveRequest.setKey(API_KEY); 
      } 
     }); 
     return b.build(); 
} 

사용이 구글-API - 자바 클라이언트 1.12.0 베타 경우

다운로드 및 수입 구글-API - 자바 클라이언트 1.11 setJsonHttpRequestInitializer 방법은 정의되지 않은 것으로 나타났습니다 .0-beta

하지만 이제는 다음과 같이 나타납니다. 설치된 애플리케이션에 클라이언트 ID 사용 : 클라이언트 ID.

다음
Exceptioncom.google.api.client.googleapis.json.GoogleJsonResponseException: 401 Unauthorized 
{ 
    "code" : 401, 
    "errors" : [ { 
    "domain" : "global", 
    "location" : "Authorization", 
    "locationType" : "header", 
    "message" : "Invalid Credentials", 
    "reason" : "authError" 
    } ], 
    "message" : "Invalid Credentials" 
} 

인 프로젝트 소스 키 API :

com.google.api.client.http.HttpResponseException: 403 Forbidden 
{ 
    "error": { 
    "errors": [ 
    { 
    "domain": "usageLimits", 
    "reason": "accessNotConfigured", 
    "message": "Access Not Configured" 
    } 
    ], 
    "code": 403, 
    "message": "Access Not Configured" 
    } 
} 

간단한 API 액세스를 사용

http://www.sendspace.com/file/an6xxy

뭐가 문제, 인증서 지문 (SHA1)와 아마 뭔가?

Google에서 calendar-android-sample을 시도합니다.

Google api 콘솔에 등록 앱에 문제가있는 것 같습니다.

어디서 샘플을 얻을 수 있습니까?

샘플을 Android에서 디버그 모드로 실행 한 후 "액세스가 구성되지 않음"이 표시됩니다.

답변

1

이전 버전의 Java 라이브러리를 사용 중일 수 있습니다.

어쨌든, 당신은 다음 코드와 같이 HttpRequestInitializerGoogleCredential 개체의 인스턴스를 사용할 수 있습니다

안드로이드에
private Drive getDriveService(String token) { 
    Credential credential = new GoogleCredential().setAccessToken(token); 
    Drive.Builder b = new Drive.Builder(
     AndroidHttp.newCompatibleTransport(), new JacksonFactory(), credential) 
     .setHttpRequestInitializer(credential); 
    return b.build(); 
} 
+0

예, 도움이되었습니다. 그러나 이제는 Access가 구성되지 않습니다. Google 드라이브 용 Google API 콘솔에서 API 키를 작성하고 Manifets에서 작성했지만 행운은 없습니다. Exceptioncom.google.api.client.googleapis.json.GoogleJsonResponseException : (403) 금지 { "코드": 403, "오류": [{ "도메인": "usageLimits" "메시지": "구성되지 않음 액세스", "이유": "accessNotConfigured" } ], "message": "Access Not Configured" } – user1826780

+0

드라이브 API는 인증을 위해 API 키를 사용하지 않고 대신 https://developers.google.com/android/google에서 설명한 인증 토큰이 필요합니다. -play-services/authentication –

+0

더 많은 정보가 추가 되었습니까? – user1826780

2

이, 가장 좋은 방법은 구글의 OAuth 2.0 Play 서비스를 사용하는 것입니다. 라이브러리의 버전 1.12.0-beta에서이 작업을 수행하려면 GoogleAccountCredential을 사용해야합니다.

예를 들어 calendar-android-sample을 Android 용 OAuth 2.0을위한 가이드 라인으로 사용하시기 바랍니다. 지침을주의 깊게 읽으십시오. 이 기능을 사용하려면 먼저 Google APIs Console에 신청서를 등록해야합니다. 샘플 코드 스 니펫 :

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    ... 
    // Google Accounts 
    credential = GoogleAccountCredential.usingOAuth2(this, CalendarScopes.CALENDAR); 
    SharedPreferences settings = getPreferences(Context.MODE_PRIVATE); 
    credential.setSelectedAccountName(settings.getString(PREF_ACCOUNT_NAME, null)); 
    // Calendar client 
    client = new com.google.api.services.calendar.Calendar.Builder(
     transport, jsonFactory, credential).setApplicationName("Google-CalendarAndroidSample/1.0") 
     .build(); 
} 
+0

캘린더 샘플의 클라이언트 ID를 만들려고했지만 가져 오는 중에 예기치 않은 오류가 발생했습니다. 우리는 그것을 조사하고 있습니다. 이게 Google에 일시적입니까? – user1826780

+1

패키지 이름이 길기 때문에 발생하는 것으로 확인되었습니다. – user1826780

+0

캘린더 샘플을 시험해 볼 때, Google api 콘솔에서 만든 클라이언트 ID를 어디에 설정합니까? – user1826780

관련 문제