1

メール設定 API を使用したいのですが、oAuth2 認証でこの API を使用する方法に関するドキュメントが見つかりません

  1. 正しい API を使用していますか?
  2. 最新の API を使用していますか? (Google.GData.Apps.dll バージョン 2.2.0)
  3. この DLl を p12 ファイルとサービス アカウントを持つ Google コンソール プロジェクトで使用するにはどうすればよいですか?

Google のドキュメントによると、これは最新の api voor メール設定です: https://developers.google.com/admin-sdk/email-settings/

このページには、Oauth を使用して .Net で使用する方法に関するドキュメントはありませんが、例では次のように表示されます。

using Google.GData.Apps;
using Google.GData.Apps.GoogleMailSettings;

GoogleMailSettingsService service = new GoogleMailSettingsService("yourdomain", "your-apps");
service.setUserCredentials("adminUsername", "adminPassword");    
service.CreateSendAs("liz", "Sales", "sales@example.com", "", "true");

これらの参照を検索すると、次のページが見つかります: https://code.google.com/p/google-gdata/ または nuget パッケージ: www.nuget.org/packages/Google.GData.Apps/ 最新バージョンは 2.2 です.0

コンソール プロジェクト Oauth2 とサービス アカウントを使用して新しい API に切り替えているので、私の質問は、最新の API と同じ認証を使用して dll を使用できますか?

新しい API は次の認証方法を使用します。

X509Certificate2 certificate = new X509Certificate2(@"\location\P12File.p12", "notasecret", X509KeyStorageFlags.Exportable);
IEnumerable<string> scopes = new[] { DirectoryService.Scope.AdminDirectoryUser, DirectoryService.Scope.AdminDirectoryUserSecurity };
ServiceAccountCredential credential = new ServiceAccountCredential(
    new ServiceAccountCredential.Initializer("ServiceAccountEmail@domain.com")
    {
        Scopes = scopes,
        User = "AdminAccount@domain.com"
    }.FromCertificate(certificate));

// Create the service.
var service = new DirectoryService(
    new BaseClientService.Initializer()
    {
        HttpClientInitializer = credential,
        ApplicationName = "Admin directory Provisioning Sample",
    });

service.Users.Delete(userKey).Execute();
4

2 に答える 2

1

メール設定 API およびサービスであるその他の GData クラスについては、次のようなものを使用できます。

using Google.GData.Apps;
using Google.GData.Apps.GoogleMailSettings;
using Google.GData.Client;

// Name of my cli application
string applicationName = "Test-OAuth2";

// Installed (non-web) application
string redirectUri = "urn:ietf:wg:oauth:2.0:oob";

// Requesting access to Contacts API and Groups Provisioning API
string scopes = "https://apps-apis.google.com/a/feeds/emailsettings/2.0/";

// Stuff usually found on client_secrets.json
string clientId = CLIENT_ID;
string clientSecret = CLIENT_SECRET;
string domain = CLIENT_DOMAIN;

// Prepare OAuth parameters
OAuth2Parameters parameters = new OAuth2Parameters() {
    ClientId = clientId,
    ClientSecret = clientSecret,
    RedirectUri = redirectUri,
    Scope = scopes
};

// Request authorization from the user
string url = OAuthUtil.CreateOAuth2AuthorizationUrl(parameters);
Console.WriteLine("Authorize URI: " + url);

// Fetch the access code from console
parameters.AccessCode = Console.ReadLine();

// Get an access token
OAuthUtil.GetAccessToken(parameters);

try {
    // Create a new request factory so it uses our OAuth credentials
    GOAuth2RequestFactory requestFactory = new GOAuth2RequestFactory("apps", applicationName, parameters);

    GoogleMailSettingsService service = new GoogleMailSettingsService(domain, applicationName);
    service.RequestFactory = requestFactory;

    // Update the signature for the user testUserName
    service.UpdateSignature("test@test.localhost.com", "My tiny signature");
} catch (AppsException a) {
    Console.WriteLine("A Google Apps error occurred.");
    Console.WriteLine();
    Console.WriteLine("Error code: {0}", a.ErrorCode);
    Console.WriteLine("Invalid input: {0}", a.InvalidInput);
    Console.WriteLine("Reason: {0}", a.Reason);
}

GData で提供される OAuth サンプルで完全な例を確認できます: https://code.google.com/p/google-gdata/source/browse/trunk/clients/cs/samples/oauth2_sample/oauth2demo.cs

リクエストを使用する他の GData クラスの場合、フローは似ていますが、代わりに RequestSettings オブジェクトを作成し、次のように GData リクエスト オブジェクト コンストラクターに渡します: https://code.google.com/p/google-gdata/source/参照/トランク/clients/cs/samples/oauth2_sample/oauth2demo.cs#63

于 2015-02-23T13:08:14.410 に答える