使用 OAuth2.0 令牌.用于接收 GData 的凭据

本文关键字:GData OAuth2 令牌 用于 使用 | 更新日期: 2023-09-27 18:30:44

>我需要一些帮助 - 我仍在使用目录API对新的Google Admin SDK进行思考。 到目前为止,我可以创建/删除用户,创建/删除别名。 我已经授权了我需要等领域的范围。

我的问题是如何使用下面的现有代码来使用 GData 库? 我需要使用"CreateSendAs()"函数,但它使用另一组与目录API不同的包含。 我是否必须将 Auth2.0 令牌设置为某些内容,以便可以使用较旧的 GData 调用?

我用于目录 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");

使用 OAuth2.0 令牌.用于接收 GData 的凭据

我不确定以下方法的正确性,但这对我有用。使用服务凭据令牌,您可以访问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");