【问题标题】:Using the OAuth2.0 Token.Credentials for acessing GData使用 OAuth 2.0 Token.Credentials 访问数据
【发布时间】:2014-11-18 16:07:38
【问题描述】:

我需要一些帮助 - 我仍在尝试使用 Directory API 了解新的 Google Admin SDK。到目前为止,我能够创建/删除用户,创建/删除别名。我已经授权了我需要等领域的范围。

我的问题是如何使用下面的现有代码来使用 GData 库?我需要使用“CreateSendAs()”函数,但它使用了另一组不同于 Directory API 的包含。我是否必须设置 Auth2.0 令牌才能使用旧的 GData 调用?

我用于 Directory API:

    const string serviceAccountEmail = "XXXXXX@developer.gserviceaccount.com";

    const string serviceAccountCertPath = @"C:\XX-privatekey.p12";
    const string serviceAccountCertPassword = "notasecret";
    const string userEmail = "super-admin-user@domain.com";

    var certificate = new X509Certificate2(serviceAccountCertPath, serviceAccountCertPassword, X509KeyStorageFlags.Exportable);

    ServiceAccountCredential credential = new ServiceAccountCredential(
new ServiceAccountCredential.Initializer(serviceAccountEmail)
{
Scopes = new[] { DirectoryService.Scope.AdminDirectoryUser },
User = userEmail
}.FromCertificate(certificate));
var service = new DirectoryService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = APP_NAME,
});

这是我需要用于“CreateSendAs()”函数的 C# 代码。

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

GoogleMailSettingsService service = new GoogleMailSettingsService("yourdomain", "your-apps");

service.setUserCredentials("adminUsername", "adminPassword");
service.CreateSendAs("liz", "Sales", "sales@example.com", "", "true");

【问题讨论】:

标签: c# google-api google-apps google-api-dotnet-client


【解决方案1】:

我不确定以下方法有多正确,但这对我有用。使用服务凭证令牌,您可以访问 GoogleMailSettingsService,如下所示

bool success =  credential.RequestAccessTokenAsync(System.Threading.CancellationToken.None).Result;

OAuth2Parameters parameter = new OAuth2Parameters()
{
     AccessToken = credential.Token.AccessToken
};

GOAuth2RequestFactory requestFactory = new GOAuth2RequestFactory("apps","your-apps", parameter);
GoogleMailSettingsService service = new GoogleMailSettingsService("yourdomain", "your-apps");
service.RequestFactory = requestFactory;
service.CreateSendAs("liz", "Sales", "sales@example.com", "", "true");

【讨论】:

  • 感谢您的帮助,但没有奏效。我可以从凭据中设置 AccessToken,但我没有收到以下错误:值不能为空。参数名称:refresh_token
猜你喜欢
  • 1970-01-01
  • 2012-02-26
  • 2015-11-11
  • 2017-08-06
  • 2020-08-10
  • 2013-01-14
  • 1970-01-01
  • 2023-01-24
  • 1970-01-01
相关资源
最近更新 更多