2013-06-27 2 views
1

Perform Google Apps Domain-wide Delegation of Authority에서 C#/.NET을 사용하여 샘플 코드를 시험해 보았습니다. 다른 샘플에서와 마찬가지로 인증 변수를 사용하는 객체를 만드는 코드 부분에서 구문이 잘못되었습니다. 여기 코드 나는이된다OAuth2를 사용하여 Google API에 인증

using System; 
using System.Security.Cryptography; 
using System.Security.Cryptography.X509Certificates; 
using DotNetOpenAuth.OAuth2; 
using Google.Apis.Authentication.OAuth2; 
using Google.Apis.Authentication.OAuth2.DotNetOpenAuth; 
using Google.Apis.Drive.v2; 
using Google.Apis.Util; 

namespace GoogleAPIDemo 
{ 
    class DriveServiceObject 
    { 
     private const string SERVICE_ACCOUNT_EMAIL = "<some-id>@developer.gserviceaccount.com"; 
     private const string SERVICE_ACCOUNT_PKCS12_FILE_PATH = @"\path\to\<public_key_fingerprint>-privatekey.p12"; 

     /// <summary> 
     /// Build a Drive service object authorized with the service account 
     /// that acts on behalf of the given user. 
     /// </summary> 
     /// @param userEmail The email of the user. 
     /// <returns>Drive service object.</returns> 
     static DriveService BuildService(String userEmail) 
     { 
      X509Certificate2 certificate = new X509Certificate2(SERVICE_ACCOUNT_PKCS12_FILE_PATH, "notasecret", 
       X509KeyStorageFlags.Exportable); 

      var provider = new AssertionFlowClient(GoogleAuthenticationServer.Description, certificate) 
      { 
       ServiceAccountId = SERVICE_ACCOUNT_EMAIL, 
       Scope = DriveService.Scopes.Drive.GetStringValue(), 
       ServiceAccountUser = userEmail, 
      }; 
      var auth = new OAuth2Authenticator<AssertionFlowClient>(provider, AssertionFlowClient.GetState); 

      return new DriveService(auth); 
     } 
    } 
} 

나는이 내 처음으로 구글의 API와이 작업을 받고 도움을 사용하는 응용 프로그램을 작성하는이 크게 감상 할 수있다

(local variable) OAuth2Athenticator<AssertionFlowClient> auth 

Error: 
    The best overloaded method match for 'Google.Apis.DriveService.DriveService(Googel.Apis.Services.BaseClientService.Initializer)' has some invalid arguments 

입니다 볼 수있는 오류를!

+0

'Google.Apis.DriveService.DriveService'의 예상 인수가 무엇의 아닌'OAuth2Authenticator

답변

3

이 하나가 작동합니다

 var provider = new AssertionFlowClient(
      GoogleAuthenticationServer.Description, 
      new X509Certificate2(privateKeyPath, keyPassword, X509KeyStorageFlags.Exportable)) 
     { 
      ServiceAccountId = serviceAccountEmail, 
      Scope = DriveService.Scopes.Drive.GetStringValue(), 
      ServiceAccountUser = driveHolderAccountEmail 
     }; 
     var auth = new OAuth2Authenticator<AssertionFlowClient>(provider, AssertionFlowClient.GetState); 

     m_service = new DriveService(new BaseClientService.Initializer() 
     { 
      Authenticator = auth 
     }); 
+0

지금 시도하면 ... 곧 게시 될 예정입니다. 감사! – GeneBean

+0

내 문제가 해결되었습니다. – GeneBean

+0

여기에 m_service와 keyPassword는 무엇입니까? ('m_service'라는 이름이 현재 컨텍스트에 존재하지 않습니다.) 오류가 발생했습니다. 도와주세요. –