4

나는이 일 동안 지금 당황했습니다. Google 드라이브에 파일을 업로드하기 위해 Google API 샘플의 정확한 코드를 복사했습니다. 여기에 코드메서드를 찾을 수 없음 : 'Void Google.Apis.Util.Store.FileDataStore..ctor (System.String)'

UserCredential credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
      new ClientSecrets 
      { 
       ClientId = ClientId, 
       ClientSecret = ClientSecret, 
      }, 
      new[] { DriveService.Scope.Drive, 
      DriveService.Scope.DriveFile }, 
       "user", 
       CancellationToken.None, 
       new FileDataStore("MyStore")).Result; 

입니다 그러나 런타임에 예외 던질 것 : 찾을 수없는 방법 : '무효 Google.Apis.Util.Store.FileDataStore..ctor (선택 System.String)'. 이미 필요한 Google Api DLL을 추가했습니다.

또는 누군가가 서버 측 인증을 구현하는 웹 사이트의 Google 드라이브에 파일을 업로드하는 데 더 좋은 코드를 제안 할 수 있습니다. 어떤 도움이라도 대단히 감사하겠습니다.

UPDATE :이

var token = new TokenResponse { RefreshToken = "1/6hnki1x0xOMU4tr5YXNsLgutzbTcRK1M-QOTEuRVxL4" }; 
       var credentials = new UserCredential(new GoogleAuthorizationCodeFlow(new GoogleAuthorizationCodeFlow.Initializer 
       { 
        ClientSecrets = new ClientSecrets 
        { 
         ClientId = ClientId, 
         ClientSecret = ClientSecret 
        }, 
        Scopes = new[] { 
         DriveService.Scope.Drive, DriveService.Scope.DriveFile 
        } 
       }), "user", token); 

에 내 코드를 변경 그러나 그것은 또한 예외가 발생합니다 : 찾을 수 없음 방법 : '무효 Google.Apis.Auth.OAuth2.Flows.GoogleAuthorizationCodeFlow..ctor (이니셜). dll에 문제가 있습니까?

+0

런타임에이 예외가 발생합니까? 아니면 컴파일 오류가 발생합니까? –

+0

런타임에 throw합니다 – user3732193

+0

왜이 예외가 발생했는지 정확히 알지 못하지만 적어도 다음과 같이 생각해야합니다. UserCredential credential = await GoogleWebAuthorizationBroker.AuthorizeAsync (...); 또는 메서드 비동기를 다음과 같이 실행하지 않으려면 var task = GoogleWebAuthorizationBroker.AuthorizeAsync (...); var cred = task.Wait(); 너 시도 할 수있어 ? async를 실행하지 않는 Btw는 앱의 메인 스레드를 차단할 것이므로 좋지 않습니다. – Dragouf

답변

1

v1.8.2 of Google APIs Client Library에 버그가있는 것 같습니다. .NET Framework 4에서 v1.8.1 using nuget 을 사용해보십시오.

+0

고마워요! 이것은 견과를 또한 몰고 있었다, 그러나 다운 그레이드는 작동했다. 나는 그것이 모두 빨리 분류 되길 바래. – squid808

+0

squid808m, user3732193 및 Antony Thomas, – peleyal

1

정말 이상합니다. 우리의 모든 샘플은 새 라이브러리 (1.8.2)를 사용하며 작동합니다. VS2010과 관련이 있거나 최신 .NET 4 패치 중 하나를 설치하지 않았을 수 있습니까? (설치) 확인 .NET 프레임 워크 4.0 업데이트 KB2468871 (http://www.microsoft.com/en-us/download/details.aspx?id=3556를 확인합니다.

샘플이 성공적으로 우리의 환경이 다른 것을 의미 실행하는 것이 사실입니다. 당신이 사용하는 일 윈도우 8에 VS 2012를 사용 해요?

우리의 이슈 트래커 ( https://code.google.com/p/google-api-dotnet-client/issues/list)에 새로운 이슈를 열 자유롭게

, 우리는 거기에서 걸릴 수 있습니다

1

이 나는 ​​문제 해결을 위해 한 일이다.

public UserCredential GetRefreshToken(string refreshToken, string clientID, string clientSecret, string[] scopes) 
{ 
    TokenResponse token = new TokenResponse 
    { 
     RefreshToken = refreshToken 
    }; 

    IAuthorizationCodeFlow flow = new AuthorizationCodeFlow(new AuthorizationCodeFlow.Initializer(Google.Apis.Auth.OAuth2.GoogleAuthConsts.AuthorizationUrl, Google.Apis.Auth.OAuth2.GoogleAuthConsts.TokenUrl) 
    { 
     ClientSecrets = new ClientSecrets 
     { 
      ClientId = clientID, 
      ClientSecret = clientSecret 
     }, 
     Scopes = scopes 
    }); 

    UserCredential credential = new UserCredential(flow, "me", token); 
    try 
    { 
     bool success = credential.RefreshTokenAsync(CancellationToken.None).Result; 
    } 
    catch 
    { 
     throw; 
    } 
    return credential; 
} 
+0

어떤 .NET 버전을 사용하고 있습니까? – Hooch

0

가 동일했다을 Visual St를 사용하는 문제 Audio 2013 + Update 3 on win 8.1 .NET 4.5가 내 콘솔 프로젝트의 대상 프레임 워크로 설정되었습니다 (기본적으로 선택되어 있음). Google api에 대한 모든 참조를 삭제하면 문제가 해결되었습니다. 그런 다음 ".NET 프레임 워크 4"로 대상 프레임 워크를 전환 (솔루션 탐색기에서 프로젝트를 선택, 마우스 오른쪽 버튼을 클릭 -> 속성 -> 응용 프로그램 페이지 -> 대상 프레임 워크 드롭 다운) 다음과 같은 순서로 nuget와 다음 설치하는 API :

PM> Install-Package Google.Apis 
PM> Install-Package Google.Apis.Auth 
PM> Install-Package Google.Apis.Drive.v2 
+0

.NET 4.5의 기능이 필요합니다. :( – Hooch

관련 문제